Скрыть следующий брат элемента с Javascript

Из Сравнение последовательностей и других типов в учебнике Python:

Сравнение использует лексикографическое упорядочение: сначала сравниваются первые два элемента, и если они отличаются друг от друга определяет результат сравнения; если они равны, сравниваются следующие два элемента и так далее, пока не будет исчерпана любая последовательность.

blockquote>

См. также статью Википедии о лексикографическом порядке .

13
задан DisgruntledGoat 15 May 2009 в 12:28
поделиться

3 ответа

это потому, что 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';
35
ответ дан 1 December 2019 в 17:51
поделиться

Ошибка Firebug: elem.nextSibling.style is undefined.

потому что nextSibling может быть текстовым узлом или узлом другого типа

do {
   elem = elem.nextSibling;
} while(element && elem.nodeType !== 1); // 1 == Node.ELEMENT_NODE
if(elem) elem.style.display = 'none';
2
ответ дан 1 December 2019 в 17:51
поделиться

Попробуйте выполнить цикл по дочерним элементам этого элемента, используя что-то вроде:

var i=0;
(foreach child in elem)
{
   if (i==0)
   {
     document.getElementByID(child.id).style.display='none';
    }
}

Пожалуйста, внесите соответствующие исправления в синтаксис.

0
ответ дан 1 December 2019 в 17:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: