Показать сообщение отдельно
  #6 (permalink)  
Старый 02.08.2010, 01:14
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

во-первых, из HTMLCollection нельзя ничего удалять. Во-вторых, delete предназначен для удаления свойств объектов, а не элементов массива. В-третьих, массивы фильтруются с помощью метода filter. Здесь сказано, как использовать его кроссбраузерно. Для копирования массивов можно использовать следующую функцию (в частности работает при копировании из HTMLCollection и arguments)
function $A(iterable){
	if (iterable.item){
		var l = iterable.length, array = new Array(l);
		while (l--) array[l] = iterable[l];
		return array;
	}
	return Array.prototype.slice.call(iterable);
};

в результате код будет выглядеть как-то так:
var divs = document.getElementsByTagName('div');
divs = $A(divs).filter(function(el){
    return el.style.display != 'none' &&
        el.type=="hidden" &&
        el.style.zIndex<=-3;
});
Ответить с цитированием