¿Cómo obtengo el siguiente elemento en HTML usando JavaScript?
Supongamos que tengo tres <div>
sy obtengo una referencia a uno en el código JavaScript, quiero obtener cuál es el siguiente <div>
y cuál es el anterior.
fuente
¿Cómo obtengo el siguiente elemento en HTML usando JavaScript?
Supongamos que tengo tres <div>
sy obtengo una referencia a uno en el código JavaScript, quiero obtener cuál es el siguiente <div>
y cuál es el anterior.
Bueno, en javascript puro, mi pensamiento es que primero tendrías que recopilarlos dentro de una colección.
var divs = document.getElementsByTagName("div");
//divs now contain each and every div element on the page
var selectionDiv = document.getElementById("MySecondDiv");
Básicamente, con selectionDiv iterar a través de la colección para encontrar su índice, y luego obviamente -1 = anterior +1 = siguiente dentro de los límites
for(var i = 0; i < divs.length;i++)
{
if(divs[i] == selectionDiv)
{
var previous = divs[i - 1];
var next = divs[i + 1];
}
}
Sin embargo, tenga en cuenta que, como digo, se necesitaría una lógica adicional para verificar que se encuentra dentro de los límites, es decir, que no se encuentra al final o al comienzo de la colección.
Esto también significará que tienes un div que tiene un div hijo anidado. El siguiente div no sería un hermano sino un hijo, por lo que si solo desea hermanos en el mismo nivel que el div objetivo, definitivamente use nextSibling verificando la propiedad tagName .
use las propiedades
nextSibling
ypreviousSibling
:Sin embargo, en algunos navegadores (no recuerdo cuál) también debe verificar los espacios en blanco y los nodos de comentarios:
Bibliotecas como jQuery manejan todas estas comprobaciones entre navegadores de forma inmediata.
fuente
div
en el marcado no sea adyacente al elemento; podría ser un nivel más profundo o un nivel más alto.if i write dirty HTML, Javascript will act strange
¿qué tal si escribes un HTML limpio y válido?Realmente depende de la estructura general de su documento.
Si usted tiene:
puede ser tan simple como atravesar el uso
Sin embargo, si el "siguiente" div podría estar en cualquier parte del documento, necesitará una solución más compleja. Podrías probar algo usando
y ejecutarlos para llegar a donde quieres de alguna manera.
Si está haciendo muchos recorridos DOM complejos como este, le recomendaría buscar en una biblioteca como jQuery.
fuente
Hay un atributo en cada HTMLElement, "previousElementSibling".
Ex:
En vivo: http://jsfiddle.net/QukKM/
fuente
previousSibling
parece ser la solución de varios navegadores.Esto será fácil ... es un código javascript puro
fuente
todas estas soluciones parecen exageradas. ¿Por qué usar mi solución?
previousElementSibling
compatible con IE9document.addEventListener
necesita un polyfillpreviousSibling
podría devolver un mensaje de textoTenga en cuenta que he elegido devolver el primer / último elemento en caso de que se rompan los límites. En un uso de RL, preferiría que devolviera un valor nulo.
fuente
Lo probé y funcionó para mí. El elemento que me encuentra cambia según la estructura del documento que tiene.
fuente