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

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

DOMは、javascriptではないのでしょうか

ある要素にアクセスする場合、 例えば、 document.form1.hoge;てしたり、 document.getElementsByName('hoge');てしたり、 jQueryを使ったりする方法があるかと思うのですが、 このgetElementsByName()メソッドは、 javascriptではないのでしょうか? 調べると、 DOMのAPIとかって、書いてあるのですが、 XMLとか、JSONみたいな、単なる仕様なのでしょうか? そうすると、PHPとかでも、getElementsByNameは使えるのでしょうか? あるいは、javascriptに特化したメソッドなのでしょうか? javascriptを書くとき、 書き方が色々あるので、 どれを選択すればよいかいつも迷うのですが、 DOMを使ってできる処理は、 一般的には、DOMで書くのでしょうか? DOMのデメリットとしては、 古いブラウザが対応してない、ぐらいしか思い浮かばないのですが、 DOMとjavascriptは対等な関係で、 使わなくてもいいけど、 使ったほうが便利、みたいな認識でいいのでしょうか? DOMでしかできない処理みたいなのはあるのでしょうか?

  • re999
  • お礼率61% (476/777)

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

  • ベストアンサー
  • 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% (4846/10257)
回答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

  • javascript DOM

    javascript DOMについて DOMはドキュメントオブジェクトモデルの略だと思いますが、DOMそのものというのはブラウザ画面に映っているオブジェクトそのものという解釈で良いのでしょうか? というのもjavascriptには「document.write()」というメソッドがあると思いますがdocumentはブラウザ画面そのものを指していて、writeは書く。直訳するとブラウザ画面に書くになると思いますが DOMもdocumentはブラウザ画面、オブジェクトはブラウザに移っているオブジェクト(<input type="button">など)、モデルは良くわからないのですが HTMLの画面に映っているタグ自体はDOMと呼ぶのでしょうか?

  • JavaScript DOMについて

    JavaScriptの勉強を始めて、1か月程度の初心者です。 JavaScriptを使って、計算したり、カレンダーを作ったり、 HTMLの要素の内容を変更させたり、削除したり、 スタイルシートのプロパティ?を変更して、背景色を変えたり、要素を移動したり、 イベントを使用したりと、出来ることは増えてきて、勉強するのが楽しくなってきたのですが、 いまだにDOM操作についていまいち理解できていません。 具体的にDOMとはどこからどこまでなんでしょうか? JavaScriptに組み込まれているオブジェクト(Date,Math、String、Array) 以外のものは、すべてDOM操作と言う事でしょうか? イベントハンドラだとか、タイマ機能?(windowオブジェクトのsetTimeout()メソッド)なども DOMと言う事でしょうか? どなたかわかりやすく説明してもらえると嬉しいです。

  • DOMとjavascriptについて

    javascriptとperlを駆使して、動的なホームページを作っています。 javascriptで動的にタグを生成してそれを参照したりするような処理を、書いていくと時々新しく生成したタグを参照できなくなったりします。ここにスクリプトを掲載することは出来ないんですが、ajax通信でサーバーとデータをやり取りし、何度もhtmlを書き換えるホームページを作っています。するとなぜだか新しく生成したタグが参照できなくなったりします。 他にはjqueryのappendメソッドで、タグを文字列として直接書き込んだ場合、タグをタグとして認識してくれないということもありました。 javascriptに原因があるのか、domに原因があるのか、それともテスト用のブラウザに使っているfirefoxの処理の仕方に原因があるのかわかりません。どなたか原因を知っている方がいらしたら是非ご教授ください。

  • javascriptのドキュメントについて

    javascriptのドキュメントについて 純粋なjavascriptの関数やオブジェクトの DocumentはWeb上ではどこで参照可能ですか? 純粋なとはjsonやjqueryなどのフレームワーク 的なもののドキュメントではない標準のjavascriptということです。

  • javascriptのDOMについてなんですが・・・

    閲覧有難うございます。 JavaScriptのDOMを用いてテキストボックスを生成しようと考えているのですがうまくいきません。 <form name="form" action="index2.php"> <select id="factor" onchange="swicthForm()"> <option value="0">選んでください</option> <option value="1">1個</option> <option value="2">2個</option> <option value="3">3個</option> <option value="4">4個</option> <option value="5">5個</option> </select> </form> <br> <script type="text/javascript"> function swicthForm(){ var options = document.form.factor.value; alert(options); } } </script> を用いてSELECTでいくらを選んだかが表示することが出来ました。 alert(options)の値の分だけテキストボックスなり何なりを生成したいのですがうまくいきません。 どの様にしたらテキストボックスなどを表示できますか?

  • jQueryでDOM要素の関数を実行する方法?

    jQueryでDOM要素の関数を実行する方法? HTML5のメディア要素のplay()をjQueryで実行したいです。 最後の行のJavaScriptで書いてあるものをjQeuryで書き換えたいのですが、 どなたか分かる方はいらっしゃいますか? html側 <video id="myVideo"> js側 document.getElementById("myVideo").play();

  • AjaxとDOMの違いを理解できません。

    prototypeやDojoやJQUERY等のライブラリーを使わず、 もちろん自分でXMLHttpRequest等もコーディングせずに 以下のような事をしているのは、AJAXと呼べないのでしょうか? 1.YahooやGoogleのAPIサービスやガジェットを使って、自分のサイトに  他サイトの情報を動的に表示している。 2. 'href="http://....'でブロック要素のTAGに外部ファイルを取り込  み、DOM技法で加工し、表示している。 3.-<script src=""http://....">で、他のサイトのJSONデータを取り込み  加工して表示している。

    • ベストアンサー
    • AJAX
  • IEでDOMインターフェースを拡張したい

    IEでDOMインターフェースを拡張したい NodeList.prototype.hoge=function(){…} のように、メソッドやプロパティを拡張しようとしたところ、IEでつまづいてしまいました…。 上記のようなコードの場合、「NodeListは宣言されていない…」のようなエラーが表示されます。また、 var NodeList としてみたところ、今度は「'prototype'はNullまたはオブジェクトではありません」と表示されました。 そこで、各DOMインターフェースを alert(Document); alert(Element); … のようにして調べてみたところ、どれも[object]が返ってきました。(もちろんjavascriptコアインターフェースでは期待通りの値が返ってきました。) それで結局のところ、IEでDOMインターフェースを拡張するにはどうすればいいのでしょうか?よろしくお願いします。

  • XML DOM XMLパーサーについて理解していません

    XMLについてイマイチ理解していないので教えてください。PHPでXMLファイルを開いて何らかの処理をするとします。例えば <?php //ドキュメントオブジェクトの作成 $doc = new DOMDocument(); //XML 文書ファイルのパース(DOM ツリーの作成) $doc->load("docs/td101.xml") //要素"b"を取得する $bElement = $doc->getElementsByTagName("b")->item(0); //取得した要素"b"に属性"ad"を設定する $bElement->setAttribute("ad","Fukuoka"); //ドキュメントをシリアライズする $doc->save("docs/result101.xml"); ?> のようにXMLファイルに属性を追加するという処理を行うとします。この時、DOMはPHPによって生成されるんでしょうか?またXMLはXMLパーサーによって解析されると本で読んだのですが、この場合PHPがXMLパーサーの機能を持っているんでしょうか?それともブラウザにXMLパーサーの機能があり、ブラウザ側で処理をされているのでしょうか?意味がわからなくて申し訳ないですが、この辺りを理解していなくて・・・御願いいたします。

    • ベストアンサー
    • XML
  • DOMでパースしているXML全体の出力方法

    お世話になります。 JavaでDOMを使ってXML操作をしたいと考えております。 おおよそ、以下のソースでparseできるところまで確認できました。 DOMParser parser = new DOMParser(); parser.parse("XMLファイルパス"); Document doc = parser.getDocument(); 開発中なので、DOM操作した結果のXMLを随時コンソールやログに 出力させたいのですが、たとえばdoc.toString()してもnullとなり、 正常に出力されません。 以下のようにElementを取得すると正常にアクセスできていることは 確認しています。 Element rootEl = doc.getDocumentElement(); System.out.println(rootEl.getNodeName()); なお、DOMライブラリにはxercesを用いております。 Dom4jのAPIも見てみましたが、それらしいメソッドを見つけることが できていません。 簡単にXMLを出力できることが理想です。 一般的な方法、よくやる手法など、みなさんよりご教示頂きたいです。

    • ベストアンサー
    • Java

専門家に質問してみよう