es porque Firefox considera que los espacios en blanco entre los nodos de elementos son nodos de texto (mientras que IE no) y por lo tanto usando .nextSibling
en un elemento obtiene ese nodo de texto en Firefox.
Es útil tener una función para usar para obtener el siguiente nodo de elemento. Algo como esto
/*
Credit to John Resig for this function
taken from Pro JavaScript techniques
*/
function next(elem) {
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType !== 1);
return elem;
}
entonces usted puede hacer
var elem = document.getElementById('the_id');
var nextElem = next(elem);
if (nextElem)
nextElem.style.display = 'none';
Pero 'elem' aún podría ser nulo. – Gumbo
No, no lo hace. Simplemente garantiza que 'nextSibling' no se accede cuando' elem' es "no verdadero" o 'elem.nodeType == 1'. Pero si no hay tal elemento, 'elem' es solo el último nodo hermano, independientemente de qué tipo sea. – Gumbo
Aquí hay un ejemplo: var elem = document.createElement ("div"); elem.appendChild (document.createTextNode ("foo")); elem.appendChild (document.createTextNode ("barra")); Alerta (siguiente (elem.firstChild) === null); // "verdadero" – Gumbo