8

この質問はばかげているように思えるかもしれませんが、document.getElementById("someId") を使用して要素 (ID "someId") にアクセスすることと、. someId と入力するだけですか?

例えば:

document.getElementById("someId").style.top = "12px";

someId.style.top = "12px";

サンプルコードは次のとおりですhttp://jsfiddle.net/pRaTA/ (firefoxでは機能しないことがわかりました)

4

5 に答える 5

7

違いはsomeId、一部のブラウザでは機能しますが、document.getElementById("someId")実際にはW3C標準に準拠していることです。

于 2010-12-01T06:50:05.187 に答える
2

要素のDOMIDを宣言することは、それがすべてのブラウザーでグローバル変数として使用可能であることを意味するわけではありません。それを取得するための唯一の相互互換性のある方法は、最初に行うことです。

var someId = document.getElementById("someId");

編集:このテストコードを作成しました。これは、Webkitベースのブラウザーが、最初に宣言せずにIDを変数として使用できるように見えることを確認します。これによると、IEもこの動作を示します。

  • Firefox:オブジェクト/未定義
  • Safari:オブジェクト/オブジェクト
  • Chrome:オブジェクト/オブジェクト
  • IE:オブジェクト/オブジェクト(未確認)

コード:

 <html>
    <head>
    </head>
 <body>
   <div id="foo"></div>
   <script type="text/javascript">

     alert("getElementById: "+typeof document.getElementById("foo"));
     alert("as a var: "+typeof foo);

   </script>
 </body>
于 2010-12-01T06:48:41.140 に答える
0

要素のIDにちなんで名付けられたグローバルオブジェクトのプロパティとして要素にアクセスすること(2番目の例)は、IEに由来し、SafariとChromeによってコピーされた便利な機能です。それは本当に悪い考えであり、あなたはそれを使うべきではありません。主な問題は、名前の衝突です(たとえば、「alert」や「document」などの完全に有効なIDを持つ要素)。

document.getElementById()一方、は、古くから確立されたDOM標準であり、いくつかのばかげたIEの欠陥を除けば、絶対確実です。常に他の形式よりも優先して使用してください。

于 2010-12-01T10:17:06.773 に答える
0

だけを使用someIdすることは、要素を選択する古い方法です (これは IE によって実装されたと思います)。document.getElementById は、すべてのブラウザーで機能する標準的なものです。

古い IE ブラウザーのみをサポートするというシナリオを考慮してください。document.getElementById はさらに信頼性が高く、読みやすくなっています。ID にすべての数字を使用している場合は信頼できます。

例えば:

input element id="123"

document.getElementById('123').value; // this one works
123.value; // this one doesn't
于 2010-12-01T06:57:22.260 に答える
0

クライアント側のスクリプトでは、document.getElementById を実行して、Web ページ内の要素 obj を取得します。DOM およびそのプロパティとメソッドから特定の要素を取得するには、getElementById メソッドを使用する必要があります。Jqueryでは、単に var objX = $('#id') を実行できます

idをまっすぐに書き留めても仕事はできません。ドキュメントを走査せずに DOM から要素 obj をどのように抽出するのでしょうか。document.getElementById メソッドは、ドキュメントから要素情報を取得します。これが意味をなすことを願っています。

于 2010-12-01T06:43:11.870 に答える