2012-10-02 56 views
-2

的元素我有兩個元件是這樣的:靶向另一個通過的getElementById

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


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

然後我想的getElementById(「試驗」),但是我需要「測試」在第一個div。 同時這是一個例子,我的div沒有預定義的順序。

+0

有人低估了每個答案以及問題。愚蠢的小人物。 –

回答

0

user1689607的評論,上述假設顯示你的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'/> 
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和下方支撐,你需要一個輔助方法來按類來獲取元素。

+0

可否告訴我如何跨度在另一個分區.. –

+0

@PejmanGhasemi:哪個div? div是否有ID?正確的DOM選擇技術將取決於DOM佈局。 –

-2

您可以使用,你的場合:

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

順便說一句,ID應該是唯一的。再多個ID的承受

+2

使用'.children [0]'而不是'.childNodes [0]'。你現在的代碼會給你'span'之前的文本節點。 –

+0

謝謝你的擡頭。我很習慣得到childNodes [x] .id並用它來獲得我完全忘記了孩子的元素。 –

+0

@ user1689607我做了一些jsperf,你的回答比我編輯的更快。 http://jsperf.com/getelementbyid-childnode-vs-children 我真的不知道這是更好的。再次感謝。 –