Просмотр полной версии : ie7 removeChild убирает не все теги
koroleva.o
14.09.2011, 11:44
Необходимо убрать все теги "<a " со страницы.
Прогон этого скрипта убирает часть тегов
var a = document.getElementsByTagName('a');
for (i=0; i<a.length; i++) {var elem = a[i]; elem.parentNode.removeChild(elem);}
...этот убирает еще парочку
var g = document.getElementsByTagName('A');
for (i=0; i<g.length; i++) {var elem = g[i]; elem.parentNode.removeChild(elem);}
Осталась вот такая запись
..
</FORM><A
..
Чем можно убрать?
Осталась вот такая запись
..
</FORM><A
..
Так это не ссылка? Обрывается неожиданно в коде или только тут?
nikita.mmf
14.09.2011, 12:56
Попробуйте вот так
var anchor;
while ( anchor = document.anchors[0] ) {
anchor.parentNode && anchor.parentNode.removeChild( anchor );
}
Попробуйте вот так
var anchor;
while ( anchor = document.anchors[0] ) {
*!*anchor.parentNode &&*/!* anchor.parentNode.removeChild( anchor );
}
когда у ссылки на странице нет родительского элемента ?
и в document.anchors будут якоря, а не ссылки. надеюсь, вы знаете разницу между ссылкой и якорем.
и еще. сказано, что надо удалить все теги А, а не только ссылки или якори.
имхо, можно написать так.
var a = document.getElementsByTagName('a'), b;
while( b = a[0] )
b.parentNode.removeChild( b );
Лучше так
var
nodes = document.getElementsByTagName('a'),
nodesInd = nodes.length;
while (nodesInd--) {
nodes[nodesInd].parentNode.removeChild(nodes[nodesInd]);
}
Помоему такая запись понятнее и мы исключаем проблему сдвига индексов просматривая их в обратную сторону.
nikita.mmf
15.09.2011, 15:30
da_ff,
почему так понятнее, самый удачный вариат привел melky, IMHO.
Свойство length лучше не использовать для работы с коллекциями, так как в IE имеется особенность с этим свойством.
Вопрос "понятности" достаточно субьективен, но перебор коллекции как правило выглядит именно так.
Свойство length лучше не использовать для работы с коллекциями, так как в IE имеется особенность с этим свойством.
Либо приводите пример кода, где length ведет себя "по-особенному" для коллекции полученной через getElementsByTagName, либо не пишите глупостей.
nikita.mmf
15.09.2011, 16:46
da_ff,
если вы не знаете об этом поведении, это не значит, что я пишу глупости!
http://javascript.ru/forum/misc/19202-rabota-s-ciklom.html#post116045
если вы не знаете об этом поведении, это не значит, что я пишу глупости!
Работа с циклом for
причем здесь это?
nikita.mmf
15.09.2011, 16:51
Riim,
по ссылке пример, который показывает особенность IE
nikita.mmf, по-моему нужно просто аккуратней выбирать значения атрибутов name. Хотя хз.
nikita.mmf
15.09.2011, 17:33
Riim,
я согласен, но над сайтом работает обычно большое количество людей и какой-нибудь программист поставит такой name ... А багрепорт по js получает фронтендер, поэтому надо быть заранее готовым к таким вещам
nikita.mmf,
Ок, хороший пример, не сталкивался с этой проблемой прежде. Буду теперь учитывать.
vBulletin® v3.6.7, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot