-1

私は最近、このjavascriptのヒントで見つけました:

element_number = Array.prototype.indexOf.call(element_1, element_2);

これにより、開発者は配列ではないオブジェクトで indexOf メソッドを使用できます。

同様の構文を使用して getElementById メソッドを呼び出すことが可能かどうかを知りたいのですが、ドキュメント全体 (document.getElementById) ではなく、次のような要素に対してだけです:

my_div_2 = document.prototype.getElementById.call(div_1, "id_of_my_div_2");

私のドキュメントにはタブが含まれており、同じ id を持つ要素がドキュメントに複数回存在する可能性があります。

それが不可能な場合、誰かがそれを行う関数を作成しましたか: ID で要素内の別の要素を検索します。

4

3 に答える 3

0

ドキュメント内で指定された ID を持つ要素は 1 つしか存在しないため、これは意味がありません。

したがって、唯一の正しい構文は

my_div_2 = document.getElementById("id_of_my_div_2");

ドキュメントで ID を再利用しないでください。おそらく、id の代わりにクラスを使用して、目的の結果を得ることができます。

于 2013-03-04T14:58:21.903 に答える
0

いいえ、代わりに使用して目的を達成できますquerySelector

my_div_2 = div_1.querySelector("#id_of_my_div_2");

IE6/7 ではサポートされていません。


つまり、重複した ID は無効です。

この手法は、ID が特定のコンテナにある場合とない場合がある異なるページで同じスクリプトが使用されている場合に役立ちます。

于 2013-03-04T15:01:45.490 に答える
0

いいえ。getElementByIdメソッド はタイプ のオブジェクトに適用する必要Documentがあります。そうしないと、WRONG_THIS_VALUE例外がスローされます。あなたはそれを試すことができます

myDiv1 = document.getElementById("div1");
myDiv2 = document.getElementById.call(myDiv1, "div2"); // no ".prototype"!
于 2013-03-04T15:04:14.340 に答える