Это потому, что Firefox считает, что пробелы между узлами элементов являются текстовыми узлами (тогда как IE не работает), и поэтому использование .nextSibling
на элементе получает этот текстовый узел в Firefox.
Полезно иметь функцию, используемую для получения следующего узла элемента. Что-то вроде этого
/*
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;
}
, то вы можете сделать
var elem = document.getElementById('the_id');
var nextElem = next(elem);
if (nextElem)
nextElem.style.display = 'none';
Но 'elem' все еще может быть пустым. – Gumbo
Нет, нет. Он просто гарантирует, что 'nextSibling' недоступен, если' elem' is not not 'или 'elem.nodeType == 1'. Но если такого элемента нет, 'elem' - это только последний узел, независимо от того, какой он тип. – Gumbo
Вот пример: var elem = document.createElement ("div"); elem.appendChild (document.createTextNode ("foo")); elem.appendChild (document.createTextNode ("bar")); alert (next (elem.firstChild) === null); // «true» – Gumbo