document.getElementByID(「someid」)vs。 someid
-
29-09-2019 - |
質問
この質問はばかげているように見えるかもしれませんが、document.getElementByID( "someid")vsを使用して、要素( "someid"を使用)にアクセスすることの違いは何ですか。 someidを入力するだけですか?
例えば:
document.getElementById("someId").style.top = "12px";
vs
someId.style.top = "12px";
これがサンプルコードです http://jsfiddle.net/prata/ (Firefoxでは機能しないことがわかりました)
解決
違いは、その間です someId
一部のブラウザで動作します、 document.getElementById("someId")
実際、W3C標準に準拠しています。
他のヒント
要素DOM IDを宣言することは、すべてのブラウザでグローバル変数として利用可能であるという意味ではありません。それを得るための唯一のクロス互換の方法は、最初に行うことです。
var someId = document.getElementById("someId");
編集: このテストコードを作成しました。これは、WebKitベースのブラウザが最初に宣言せずにIDをVARとして利用できるように見えることを確認します。によると これ, 、また、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>
クライアントサイドスクリプトでは、document.getElementByIDを使用して、Webページで要素OBJを取得します。 DOMとそのプロパティとメソッドから特定の要素を取得するには、GetElementByIDメソッドを使用する必要があります。 jqueryでは、単にvar objx = $( '#id')を行うことができます
IDストレートを書き留めても仕事はできません。なぜなら、ドキュメントを通過せずに、DOMから要素OBJをどのように抽出するからです。 document.getElementByIDメソッドは、ドキュメントから要素情報を引き出します。これが理にかなっていることを願っています。
のみを使用します someId
要素を選択する古い方法です(これはIEによって実装されたと思います)。 document.getElementByIDは、すべてのブラウザで動作する標準的なものです。
古いIEブラウザのみをサポートするシナリオを考慮してください。 document.getElementByIDはさらに信頼性が高く、読みやすいです。 IDSにすべての番号を使用している場合は信頼できます。
例えば:
input element id="123"
document.getElementById('123').value; // this one works
123.value; // this one doesn't
要素のプロパティとして要素にアクセスすると、要素のIDにちなんで名付けられたグローバルオブジェクトのプロパティ(2番目の例)は、IEで発信され、SafariとChromeによってコピーされた利便性です。それは本当に悪い考えであり、あなたはそれを使うべきではありません。主な問題は、衝突の命名です(たとえば、「アラート」や「ドキュメント」などの完全に有効なIDを持つ要素)。
document.getElementById()
, 一方、長期に設定されたDOM標準であり、 いくつかのばかげたIEの欠陥, 、絶対確実です。常に他のフォームよりも好みに使用してください。