-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 的元素是可能的。

所以唯一正确的语法是

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方法 必须应用于 type 的对象Document,否则会抛出WRONG_THIS_VALUE异常。你可以试试

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