通过getElementById将另一个元素作为目标

时间:2012-10-02 11:48:56

标签: javascript

我有两个这样的元素:

<div id="first">
    <div id="test"></div>
</div>


<div id="second">
    <div id="test"></div>
</div>

然后我想getElementbyId(&#39; test&#39;)但是我需要测试&#39;在第一个div。 同时这是一个例子,我的div没有预先定义的顺序。

3 个答案:

答案 0 :(得分:3)

具有相同ID的多个元素无效,因此您不能。

您应该使用class="test"代替。

<div id="first">
    <div class="test"></div>
</div>


<div id="second">
    <div class="test"></div>
</div>

然后这样做:

var t = document.getElementById("second").querySelector(".test");

或者只是这个:

var t = document.querySelector("#second .test");

这将支持所有现代浏览器,包括Internet Explorer 8.如果需要支持IE 7及更低版本,则需要一个辅助方法来按类获取元素。

答案 1 :(得分:0)

user1689607的评论是多个ID可以承受的,假设你上面显示的html是逐字的(也就是说,你可以识别带有类或id的容器div)

这很好,在chrome中测试过。

function mClick()
{
    var mfirst, msecond;

    mfirst = document.getElementById('first');
    msecond = document.getElementById('second');

    alert(mfirst.querySelector('#test').innerHTML);
    alert(msecond.querySelector('#test').innerHTML);
}



<div id="first">
    <div id="test">test1</div>
</div>

<div id="second">
    <div id="test">test2</div>
</div>

<input onclick='mClick();' value='click' type='button'/>

答案 2 :(得分:-2)

您可以在您的场合使用:

var divTest = document.getElementById("first").children[0];

顺便说一句,ID应该是唯一的。