Перебор элементов на странице не работает
Только начинаю осваивать js, и вот написал небольшой консольный скрип для выборочный очистки страницы вконтакте от постов. Скрипт ниже должен чистить текущую страницу от всех постов которые оставил пользователь durov.
for (var i=1;i<530;i++){ if (document.getElementsByClassName('author')[i].getAttribute('href') == '/durov') { document.getElementsByClassName('post_delete_butto n fl_r')[i].onclick();} } Но вылезает ошибка: TypeError: document.getElementsByClassName(...)[i] is undefined Насколько я понял проблема в переменной i, она почему-то не определена. Элементы с классом author на странице есть и удачно выводятся в консоль. Когда добавляю цикл и выбираю [i] элемент массива все ломается. Сколько ни пытался найти проблему, не смог. Прошу помощи |
вместо 530 должно быть document.getElementsByClassName('author').length
|
Не помогло. Не думаю, что дело тут в количестве элементов
|
webDive,
WorM32 дело говорит. проверь код, должно быть так: for (var i=1;i<document.getElementsByClassName('author').length;i++){ if (document.getElementsByClassName('author')[i].getAttribute('href') == '/durov'){ document.getElementsByClassName('post_delete_butto n fl_r')[i].onclick(); } } |
Во-первых, почему 530? Если планируешь стать программистом, запомни - то, где сегодня 530, завтра может быть 540 или 17. Во-вторых, каждый раз запрашивать .getElementsByClassName - это как бы накладненько. Вот... Проблема не в переменной i, а, скорее всего, в том, что удаляя посты их становится меньше и document.getElementsByClassName('author')[529] вернут undefined. А когда запрашиваешь метод у undefined, получаешь ошибку.
|
так должно быть без ошибок
var els = document.getElementsByClassName('author'); var btns = document.getElementsByClassName('post_delete_butto n fl_r'); for (var i = els.length - 1; i >= 0; i--) { if (els[i].getAttribute('href') == '/durov') { btns[i].onclick(); } } |
Цитата:
Но разве до того как выдать undefined скрипт не должен был удалить те элементы страницы по которым он прошелся? |
Часовой пояс GMT +3, время: 20:02. |