的元素我有兩個元件是這樣的:靶向另一個通過的getElementById
<div id="first">
<div id="test"></div>
</div>
<div id="second">
<div id="test"></div>
</div>
然後我想的getElementById(「試驗」),但是我需要「測試」在第一個div。 同時這是一個例子,我的div沒有預定義的順序。
的元素我有兩個元件是這樣的:靶向另一個通過的getElementById
<div id="first">
<div id="test"></div>
</div>
<div id="second">
<div id="test"></div>
</div>
然後我想的getElementById(「試驗」),但是我需要「測試」在第一個div。 同時這是一個例子,我的div沒有預定義的順序。
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'/>
多個元素具有相同的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和下方支撐,你需要一個輔助方法來按類來獲取元素。
可否告訴我如何跨度在另一個分區.. –
@PejmanGhasemi:哪個div? div是否有ID?正確的DOM選擇技術將取決於DOM佈局。 –
您可以使用,你的場合:
var divTest = document.getElementById("first").children[0];
順便說一句,ID應該是唯一的。再多個ID的承受
使用'.children [0]'而不是'.childNodes [0]'。你現在的代碼會給你'span'之前的文本節點。 –
謝謝你的擡頭。我很習慣得到childNodes [x] .id並用它來獲得我完全忘記了孩子的元素。 –
@ user1689607我做了一些jsperf,你的回答比我編輯的更快。 http://jsperf.com/getelementbyid-childnode-vs-children 我真的不知道這是更好的。再次感謝。 –
有人低估了每個答案以及問題。愚蠢的小人物。 –