Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.10.2014, 15:02
Новичок на форуме
Отправить личное сообщение для webDive Посмотреть профиль Найти все сообщения от webDive
 
Регистрация: 08.10.2014
Сообщений: 3

Перебор элементов на странице не работает
Только начинаю осваивать 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] элемент массива все ломается.
Сколько ни пытался найти проблему, не смог. Прошу помощи
Ответить с цитированием
  #2 (permalink)  
Старый 08.10.2014, 15:04
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

вместо 530 должно быть document.getElementsByClassName('author').length
Ответить с цитированием
  #3 (permalink)  
Старый 08.10.2014, 15:26
Новичок на форуме
Отправить личное сообщение для webDive Посмотреть профиль Найти все сообщения от webDive
 
Регистрация: 08.10.2014
Сообщений: 3

Не помогло. Не думаю, что дело тут в количестве элементов
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2014, 15:33
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

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();
  }
}
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2014, 15:38
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Во-первых, почему 530? Если планируешь стать программистом, запомни - то, где сегодня 530, завтра может быть 540 или 17. Во-вторых, каждый раз запрашивать .getElementsByClassName - это как бы накладненько. Вот... Проблема не в переменной i, а, скорее всего, в том, что удаляя посты их становится меньше и document.getElementsByClassName('author')[529] вернут undefined. А когда запрашиваешь метод у undefined, получаешь ошибку.
Ответить с цитированием
  #6 (permalink)  
Старый 08.10.2014, 16:28
Аватар для Arramis
Кандидат Javascript-наук
Отправить личное сообщение для Arramis Посмотреть профиль Найти все сообщения от Arramis
 
Регистрация: 22.07.2013
Сообщений: 104

так должно быть без ошибок
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();
	}
}
Ответить с цитированием
  #7 (permalink)  
Старый 11.10.2014, 05:12
Новичок на форуме
Отправить личное сообщение для webDive Посмотреть профиль Найти все сообщения от webDive
 
Регистрация: 08.10.2014
Сообщений: 3

Сообщение от Sweet Посмотреть сообщение
Во-первых, почему 530? Если планируешь стать программистом, запомни - то, где сегодня 530, завтра может быть 540 или 17. Во-вторых, каждый раз запрашивать .getElementsByClassName - это как бы накладненько. Вот... Проблема не в переменной i, а, скорее всего, в том, что удаляя посты их становится меньше и document.getElementsByClassName('author')[529] вернут undefined. А когда запрашиваешь метод у undefined, получаешь ошибку.
Cпасибо, учту.
Но разве до того как выдать undefined скрипт не должен был удалить те элементы страницы по которым он прошелся?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает код при добавление новых элементов dima85 jQuery 12 26.09.2015 12:27
Internet Explorer запретил выполнение сценариев и элементов ActiveX на этой странице Nailya Internet Explorer 3 02.12.2013 12:30
Не работает переключение элементов в слайдере gummet jQuery 0 20.11.2013 12:08
Ajax при заходе на страницу из поисковика - не работает Алексей_ГР Ваши сайты и скрипты 2 03.09.2013 00:03
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03