Jak uzyskać następny element w HTML za pomocą JavaScript?
Załóżmy, że mam trzy <div>
sekundy i otrzymuję odwołanie do jednego w kodzie JavaScript, chcę uzyskać następną<div>
a który poprzedni.
źródło
Jak uzyskać następny element w HTML za pomocą JavaScript?
Załóżmy, że mam trzy <div>
sekundy i otrzymuję odwołanie do jednego w kodzie JavaScript, chcę uzyskać następną<div>
a który poprzedni.
W czystym javascript myślę, że najpierw trzeba by je zestawić w kolekcji.
var divs = document.getElementsByTagName("div");
//divs now contain each and every div element on the page
var selectionDiv = document.getElementById("MySecondDiv");
Więc w zasadzie z selectionDiv iteruj przez kolekcję, aby znaleźć jej indeks, a następnie oczywiście -1 = poprzedni +1 = następny w granicach
for(var i = 0; i < divs.length;i++)
{
if(divs[i] == selectionDiv)
{
var previous = divs[i - 1];
var next = divs[i + 1];
}
}
Pamiętaj jednak, jak mówię, wymagana byłaby dodatkowa logika, aby sprawdzić, czy znajdujesz się w granicach, tj. Nie znajdujesz się na końcu ani na początku kolekcji.
Będzie to również oznaczać, że masz element div, który ma zagnieżdżony element div. Następny element div nie byłby rodzeństwem, lecz dzieckiem, więc jeśli chcesz mieć tylko rodzeństwo na tym samym poziomie co docelowy element div, zdecydowanie użyj nextSibling, sprawdzając właściwość tagName .
użyj właściwości
nextSibling
ipreviousSibling
:Jednak w niektórych przeglądarkach (zapominam w której) musisz również sprawdzić, czy nie ma białych znaków i węzłów komentarzy:
Biblioteki, takie jak jQuery, obsługują wszystkie te kontrole w różnych przeglądarkach.
źródło
div
w znaczniku może nie sąsiadować z elementem; może to być poziom głębszy lub wyższy.if i write dirty HTML, Javascript will act strange
jak napisać czysty i poprawny kod HTML?Naprawdę zależy od ogólnej struktury twojego dokumentu.
Jeśli masz:
może to być tak proste, jak przechodzenie przez używanie
Jeśli jednak „następny” element div może znajdować się w dowolnym miejscu dokumentu, będziesz potrzebować bardziej złożonego rozwiązania. Możesz spróbować czegoś używając
i biegając przez nie, aby jakoś dostać się tam, gdzie chcesz.
Jeśli wykonujesz wiele skomplikowanych przemierzania DOM, takich jak ten, polecam zajrzeć do biblioteki takiej jak jQuery.
źródło
Każdy element HTMLElement ma atrybut „previousElementSibling”.
Dawny:
Na żywo: http://jsfiddle.net/QukKM/
źródło
previousSibling
wydaje się być rozwiązaniem dla różnych przeglądarek.To będzie łatwe ... to czysty kod javascript
źródło
wszystkie te rozwiązania wyglądają na przesadę. Dlaczego warto skorzystać z mojego rozwiązania?
previousElementSibling
obsługiwane z IE9document.addEventListener
potrzebuje wypełnieniapreviousSibling
może zwrócić tekstZwróć uwagę, że zdecydowałem się zwrócić pierwszy / ostatni element w przypadku przekroczenia granic. W przypadku korzystania z RL wolałbym, aby zwracała wartość null.
źródło
Przetestowałem to i u mnie zadziałało. Element znajdujący mnie zmienia się zgodnie ze strukturą dokumentu, którą masz.
źródło