Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Назначение свойств через оператор for (https://javascript.ru/forum/events/29163-naznachenie-svojjstv-cherez-operator.html)

Mol4ok87 18.06.2012 00:27

Назначение свойств через оператор for
 
Я совсем новичок и заранее иизвиняюсь за наверняка нубский вопрос, но все же
Вот пример кода
<script>
var lists = document.getElementsByClassName('list')[0];
var list = [];
var tags = [];
for (i=0;i<=lists.children.length;i++){
lists.children[i].onmouseover = show;
}
function show(){
for (i=0;i<=this.children.length;i++){
tags[i] = this.children[i].tagName;
if(tags[i] == 'UL')
this.children[i].style.display = 'block';
}
}
</script>
при выполнении скрипта(работает как и задумывалось) Chrome выдает ошибки


Почему вылезают ошибки не пойму.

denis_orlov 18.06.2012 00:58

не понял, что Вы пытаетесь, но вот например:

<ul class="list" id="list">
<li>123</li><li>456</li><li>789</li>
</ul>
<script>
var lists = document.getElementsByClassName('list')[0];
for (i=0;i<lists.children.length;i++){
lists.children[i].onmouseover = show;
}
function show(){
if(this.tagName == 'LI')
this.style.color= this.style.color=='red'?'green':'red'; 
}
</script>


ошибка от i<=this.children.length - выход за пределы массива

Mol4ok87 18.06.2012 11:14

Все понял, спасибо.

Aetae 18.06.2012 11:45

Впредь вдумывайтесь в тексты об ошибках, это вам очень поможет. Ошибки это не просто красный диодик сообщающий о проблеме, они несут в себе информацию.
Рассмотрим ошибку: Cannot set property 'onmouseout' of undefined
Невозможно установить свойство 'onmouseout' для undefined.
undefined - нездаданное, т.е. либо переменная значение которой отсутствует, либо вовсе что-то несуществующее.
Т.е. вы пытаетесь задать свойство 'onmouseout' для того, чего нет.
В каком случае children[i] не существует или не задан?
Если i меньше нуля, либо больше чем вообще элементов в children.
Соответственно что-то не так с итератором.
Вот таким образом вы могли сами решить проблему не прибегая к помощи форума.)


Часовой пояс GMT +3, время: 00:10.