ある要素にアクセスする場合、
例えば、
document.form1.hoge;てしたり、
document.getElementsByName('hoge');てしたり、
jQueryを使ったりする方法があるかと思うのですが、
このgetElementsByName()メソッドは、
javascriptではないのでしょうか?
調べると、
DOMのAPIとかって、書いてあるのですが、
XMLとか、JSONみたいな、単なる仕様なのでしょうか?
そうすると、PHPとかでも、getElementsByNameは使えるのでしょうか?
あるいは、javascriptに特化したメソッドなのでしょうか?
javascriptを書くとき、
書き方が色々あるので、
どれを選択すればよいかいつも迷うのですが、
DOMを使ってできる処理は、
一般的には、DOMで書くのでしょうか?
DOMのデメリットとしては、
古いブラウザが対応してない、ぐらいしか思い浮かばないのですが、
DOMとjavascriptは対等な関係で、
使わなくてもいいけど、
使ったほうが便利、みたいな認識でいいのでしょうか?
DOMでしかできない処理みたいなのはあるのでしょうか?
No.3ベストアンサー
- 回答日時:
まず、JavaScript にはネイティブオブジェクト(≒組み込みオブジェクト)という、JavaScript エンジンなら必ず持っていなければならないものがあります。
Object
Array
Boolean
Date
Error
Function
Math
Number
RegExp
String
これらは new Date、new Array などの形でよく目にするでしょう。
それ以外に、JavaScript エンジンはホスト(実行環境)が提供するホストオブジェクトを使うこともできます。ブラウザをホストとして JavaScript を実行するとき、HTML/XML を操作するためのホストオブジェクトが提供されます。それが DOM です。
Node
Element
HTMLElement
HTMLAnchorElement
HTMLBodyElement
...
Attr
Text
Comment
Document
DocumentFragment
...
Window
これらは createElement、createDocument のような形で目にしたことがあるでしょう。この仕様自体は JavaScript に限らず、どの言語でも使えるように設計されています(だから、JavaScript の new ではなく、createElement のようにして作られるのです)。
---
DOM の中にも、公式に定義されたものと、ブラウザの独自拡張があります。しかし、「古いブラウザ」が持っていたものの多くは DOM の HTML モジュールとしてほぼ網羅されています(最近話題の HTML5 の別名は、DOM5 HTML です)。document.forms["form1"].elements["hoge"]、document.getElementsByName は、どちらも DOM の HTML モジュールで定義されています。
「書き方がいろいろある」と言いますが、場面に応じた適切な書き方はそんなに多くありません。「ブラウザごとに違いが大きい」とも言われますが、普通に使う分にはまず問題になりません。
このような意見のほとんどは、単に、より標準的な(サポートされる可能性が高い)ものと、独自拡張(特定のブラウザに特化したもの)の区別がついていないために、必要もないのに独自拡張に手を出して、その結果失敗しているだけです。「ブラウザごとのサポート状況」しか見ない人に、この手の失敗が多いです。
jQuery はネイティブオブジェクトや DOM の単なるラッパー(よく使う手順をまとめたりしたもの)ですので、DOM でできないことは jQuery でもできません。jQuery は魔法の小箱ではありません。
この回答への補足
回答ありがとうございます。
>公式に定義されたものと
公式というのは、どこで定義されたものが公式とみなされるのでしょうか?
>ブラウザの独自拡張
IEという理解でよいでしょうか?
IE以外にもブラウザの独自拡張というのはあるのでしょうか?
回答を拝見する限り、
JavaScriptには、
「ネイティブオブジェクト」と「ホストオブジェクト」があって、
ホストオブジェクトがDOMという風に捉えられるのですが、
そういう理解であってるのでしょうか?
手元にある本だと
「ビルトインオブジェクト」と、
「ナビゲータープロジェクト(ブラウザが独自に持っている情報など)」と、
「DOM」を並列に扱っているのですが…
No.2
- 回答日時:
DOMは仕様(XML、HTMLの要素のアクセスするための仕様)なので、JavaScriptだけでなく他の言語からも使えます。
使い方・メソッド名(関数名)は、言語によって違いますが。この回答への補足
回答ありがとうございます。
>使い方・メソッド名(関数名)は、言語によって違いますが
それは、誰がどこで決めているのでしょうか?
例えば、PHPなら、下記になるのでしょうか?
http://www.php.net/manual/ja/book.dom.php
また、JavaScriptなら、どこになるのでしょうか?
No.1
- 回答日時:
DOMはXMLにアクセスするための規格です。
もちろんPHP、VB.netでも同じように使えます。
PHPのDOMの説明:http://www.php.net/manual/ja/book.dom.php
DOM自体はそれほど新しい規格ではなく「E4X」という規格も出ています。
FirefoxのjavascriptはE4Xを対応しているはずです。
またFlashで使われている言語as2からas3の変わったときにDOMからE4Xになりました。
この回答への補足
回答ありがとうございました。
「E4X」という規格は、初めて聞きました。
>FirefoxのjavascriptはE4Xを対応しているはずです
DOMと、「E4X」には互換性があるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Webページ中の javascript をVB...
-
イベントをつかってコールバッ...
-
タブブラウザで focus() を実...
-
エクセル2010のvbaについて
-
JSPの処理の途中で、JavaScript...
-
C#でボタン名を変更しても動く
-
Excelのマクロ一括実行ができな...
-
VB.NET2003 テキストボックスに...
-
JavaScriptで ブラウザの閉じる...
-
VBScript から JavaScript を呼...
-
if(1){...}とはどういうことで...
-
PowerPointで時計表示
-
javascriptでのmdb接続について
-
VBAによる第3、4水準文字の判定...
-
外字のチェック
-
VBA SORT Applyでエラー
-
PDFフォームで条件つき金額を表...
-
変換テーブルを使った、文字列...
-
VC#でテキストボックスに変数の...
-
javascriptからサーバサイドの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
javaScriptでグローバル変数に...
-
javascript 名前空間?
-
エクセル2010のvbaについて
-
一定時間経つと画像を消す方法
-
ASP.NETでURLにマッピングされ...
-
evtとは
-
Javascriptの正規表現で変数を...
-
JavaScriptの正規表現について
-
Shell.ApplicationでのIEオブ...
-
タブブラウザで focus() を実...
-
JSの「document.getElementById...
-
javascriptでのリンク
-
画面間でのJavaScrip...
-
「リンク」と「ハイパーリンク...
-
【javascript】プロパティ?オ...
-
JavaScriptで複数のプロパティ...
-
フォルダ内のファイル名を取得...
-
javascript 親オブジェクトと子...
おすすめ情報