Como obtenho o próximo elemento em HTML usando JavaScript?
Suponha que eu tenha três se <div>
obtenho uma referência a um no código JavaScript, desejo saber qual é o próximo <div>
e qual é o anterior.
fonte
Como obtenho o próximo elemento em HTML usando JavaScript?
Suponha que eu tenha três se <div>
obtenho uma referência a um no código JavaScript, desejo saber qual é o próximo <div>
e qual é o anterior.
Bem, em javascript puro, meu pensamento é que primeiro você teria que agrupá-los dentro de uma coleção.
var divs = document.getElementsByTagName("div");
//divs now contain each and every div element on the page
var selectionDiv = document.getElementById("MySecondDiv");
Então, basicamente com selectionDiv iterar através da coleção para encontrar seu índice, e então, obviamente, -1 = anterior +1 = próximo dentro dos limites
for(var i = 0; i < divs.length;i++)
{
if(divs[i] == selectionDiv)
{
var previous = divs[i - 1];
var next = divs[i + 1];
}
}
Porém, esteja ciente de que, como eu disse, uma lógica extra seria necessária para verificar se você está dentro dos limites, ou seja, você não está no final ou no início da coleção.
Isso também significa que você tem um div que tem um div filho aninhado. O próximo div não seria um irmão, mas um filho. Portanto, se você deseja apenas irmãos no mesmo nível do div de destino, use a verificação de nextSibling na propriedade tagName .
use as propriedades
nextSibling
epreviousSibling
:No entanto, em alguns navegadores (esqueci qual), você também precisa verificar se há espaços em branco e nós de comentário:
Bibliotecas como o jQuery lidam com todas essas verificações cross-browser para você imediatamente.
fonte
div
na marcação pode não ser adjacente ao elemento; pode ser um nível mais profundo ou um nível mais alto.if i write dirty HTML, Javascript will act strange
que tal escrever html limpo e válido?Realmente depende da estrutura geral do seu documento.
Se você tem:
pode ser tão simples quanto percorrer usando
No entanto, se o 'próximo' div puder estar em qualquer lugar do documento, você precisará de uma solução mais complexa. Você poderia tentar algo usando
e examiná-los para chegar onde você deseja de alguma forma.
Se você estiver fazendo muitas travessias de DOM complexas como essa, recomendo procurar uma biblioteca como a jQuery.
fonte
Há um atributo em cada HTMLElement, "previousElementSibling".
Ex:
Ao vivo: http://jsfiddle.net/QukKM/
fonte
previousSibling
parece ser a solução para vários navegadores.Isso vai ser fácil ... é um código javascript puro
fonte
todas essas soluções parecem um exagero. Por que usar minha solução?
previousElementSibling
suportado pelo IE9document.addEventListener
precisa de um polyfillpreviousSibling
pode retornar um textoObserve que escolhi retornar o primeiro / último elemento caso os limites sejam quebrados. Em um uso de RL, eu preferiria que ele retornasse um valor nulo.
fonte
Testei e funcionou para mim. O elemento que me encontra muda de acordo com a estrutura do documento que você tem.
fonte