Этот код является бесконечным циклом, если node !== "none"
при запуске цикла:
while (node !== "none") {
(lastnode++);
(a++);
}
Ничто в цикле не меняет значение node
, поэтому после запуска цикла он никогда не остановится.
Кроме того, этот синтаксис нечетен и не обязателен:
(lastnode++);
Удалите символы, так что это просто:
lastnode++;
Использование библиотеки jQuery (что делает межбраузерный DOMманипулирование ооочень намного проще), вот некоторый код для поиска первого элемента в списке, который настроен для отображения: нет.
Вот рабочая версия: http://jsfiddle.net/jfriend00/Um95a/
и код:
HTML:
<ul id="container">
<li class="show">First item</li>
<li class="hide">Second item</li>
<li class="show">Third item</li>
<li class="show">Fourth item</li>
<li class="show">Fifth item</li>
</ul>
<br><br>
<div id="result"></div>
CSS:
.hide {display: none;}
Javascript (запуск после загрузки страницы):
function findFirstDisplayNoneChild(parent) {
var result = null;
$("#" + parent + " li").each(function() {
if ($(this).css("display") == "none") {
result = this;
return(false); // break out of each() function
}
});
return(result);
}
var hidden = findFirstDisplayNoneChild("container");
if (hidden) {
$("#result").html("Hidden Element: '" + hidden.innerHTML + "'");
} else {
$("#result").html("No hidden elements found");
}
Или, что еще прощеверсия кода с использованием: скрытого селектора:
http://jsfiddle.net/jfriend00/Xsgmu/
function findFirstDisplayNoneChild(parent) {
return($("#" + parent + " li:hidden").get(0));
}