получить значение свойства class у div
Сразу извиняюсь за глупый вопрос (я совсем немного знаю JS): почему-то скрипт не работает (FF, GreaseMonkey)
В примере я хочу найти все div на странице и у первого попавшегося с существующим свойством class отобразить первые 6 символов этого свойства Вот этот кусок никак не желает работать :cray: var anchors = document.getElementsByTagName( 'div' ); for( var i = 0; i < anchors.length; i++ ) { If (typeof anchors[i].className == "string") { alert(anchors[i].className.substr(0,5)); break; } } Помогите пожалуйста разобраться :help: |
Дело в том, что свойство className существует у всех нод-элементов (за счет прототипа), и все они имеют тип "string".
Cравнивайте строки явным образом: anchors[i].className != "" Да, и напишите «if» с маленькой буквы, яваскрипт регистрозависим . :) |
элемент еще не существует
выполните после того,как элемент будет созадн |
Цитата:
Цитата:
А, вот, кстати, еще одно узкое место. НечистаяМакака использует для домовских объектов обвертки, так что вполне возможно, что вместо anchors[i].className придется написать anchors[i].getAttribute("class") |
Цитата:
|
Проверил. Следующий код уже работает
var divs = document.getElementsByTagName( 'div' ); alert(divs.length); for( var i = 0; i < divs.length; i++ ) { if (divs[i].className.substr(0,4)== "timer") { alert(divs[i].innerHTML); break; } } Попытался усложнить задачу: с помощью FireBug нашёл на странице значение class для интересующего div. Получилось, что class="timer xxx". Вот только divs.length равно 11, хотя на этой странице этих div штук 200 (на разных уровнях вложенности). Возникает вопрос: получается что document.getElementsByTagName( 'div' ); возвращает не все элементы div? а только самого верхнего уровня? как же тогда "докопаться" далеко вглубь и найти именно div с нужным значением class="timer xxx" ? :( |
Да нет, getElementsByTagName возвращает все, что есть в документе (на момент запуска).
Кстати, в FireFox Вы можете использовать .getElementsByClassName. |
Цитата:
Опять немного изменил код для проверки var divs = document.getElementsByTagName( 'div' ); alert(divs.length); for( var i = 0; i < divs.length; i++ ) { if (divs[i].className!= "") { alert(divs[i].innerHTML); break; } } alert(divs.length) дает только 11 штук div а alert(divs[i].innerHTML) отображает окно с огромной кучей html кода, в котором явно намного больше div, чем 11 штук. Как же это может быть? |
Вопрос снимается, проблема решена внедрением в html-код кнопки с привязанным js-скриптом. Теперь после полной загрузки страницы всё работает отлично )
|
Часовой пояс GMT +3, время: 17:09. |