Mam takie elementy:

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


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

Wtedy chcę uciekać ("test"), jednak potrzebuję "testu" w pierwszym div. Tymczasem jest to przykład, a mój div nie ma wcześniej zdefiniowanej kolejności.

-1
Pejman Ghasemi 2 październik 2012, 15:48

2 odpowiedzi

Najlepsza odpowiedź

User1689607's Comment RE Multipond to wytrzymanie, zakładając, że Twój HTML pokazany powyżej jest Verbatim (to znaczy, możesz zidentyfikować kontenera DIV z klasą lub identyfikatorem, jak masz)

Działa to dobrze, przetestowane w 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'/>
1
enhzflep 2 październik 2012, 12:20

Nie jest ważny, aby mieć wiele elementów z tym samym identyfikatorem, więc nie możesz.

Zamiast tego powinieneś użyć class="test".

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


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

Następnie zrób to:

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

Albo po prostu to:

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

Spowoduje to wsparcie wszystkich nowoczesnych przeglądarek, w tym Internet Explorer 8. Jeśli potrzebujesz wsparcia dla IE 7 i niższej, potrzebujesz metody pomocnika, aby uzyskać element według klasy.

4
I Hate Lazy 2 październik 2012, 11:59