dzieje się tak dlatego, że Firefox uznaje białe znaki między węzłami elementów za węzły tekstowe (podczas gdy IE nie), a zatem użycie .nextSibling
na elemencie pobiera ten węzeł tekstowy w Firefoksie.
Przydaje się funkcja, której można użyć do uzyskania następnego węzła elementu. Coś takiego
/*
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;
}
wtedy można zrobić
var elem = document.getElementById('the_id');
var nextElem = next(elem);
if (nextElem)
nextElem.style.display = 'none';
Ale 'elem' nadal może być null. – Gumbo
Nie, nie ma. Gwarantuje tylko, że 'nextSibling' nie jest dostępny, gdy' elem' jest "nieprawdziwe" lub 'elem.nodeType == 1'. Ale jeśli nie ma takiego elementu, 'elem' jest tylko ostatnim węzłem rodzeństwa, niezależnie od tego, jaki jest. – Gumbo
Oto przykład: var elem = document.createElement ("div"); elem.appendChild (document.createTextNode ("foo")); elem.appendChild (document.createTextNode ("bar")); alert (next (elem.firstChild) === null); // "true" – Gumbo