• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DOMは、javascriptではないのでしょうか)

DOMはJavaScriptではない?getElementsByName()メソッドとは?

このQ&Aのポイント
  • DOMはJavaScriptではなく、単なる仕様の一部です。
  • getElementsByName()メソッドはJavaScriptのメソッドであり、他のプログラミング言語でも使用することができます。
  • DOMを使用すると、要素へのアクセスや操作が容易になりますが、古いブラウザでは対応していない場合があります。DOMでしかできない処理も存在します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Chaire
  • ベストアンサー率60% (79/130)
回答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 は魔法の小箱ではありません。

re999
質問者

補足

回答ありがとうございます。 >公式に定義されたものと 公式というのは、どこで定義されたものが公式とみなされるのでしょうか? >ブラウザの独自拡張 IEという理解でよいでしょうか? IE以外にもブラウザの独自拡張というのはあるのでしょうか? 回答を拝見する限り、 JavaScriptには、 「ネイティブオブジェクト」と「ホストオブジェクト」があって、 ホストオブジェクトがDOMという風に捉えられるのですが、 そういう理解であってるのでしょうか? 手元にある本だと 「ビルトインオブジェクト」と、 「ナビゲータープロジェクト(ブラウザが独自に持っている情報など)」と、 「DOM」を並列に扱っているのですが…

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

DOMは仕様(XML、HTMLの要素のアクセスするための仕様)なので、JavaScriptだけでなく他の言語からも使えます。使い方・メソッド名(関数名)は、言語によって違いますが。

re999
質問者

補足

回答ありがとうございます。 >使い方・メソッド名(関数名)は、言語によって違いますが それは、誰がどこで決めているのでしょうか? 例えば、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になりました。

re999
質問者

補足

回答ありがとうございました。 「E4X」という規格は、初めて聞きました。 >FirefoxのjavascriptはE4Xを対応しているはずです DOMと、「E4X」には互換性があるのでしょうか?

関連するQ&A