Просмотр полной версии : Установить события через цикл
Задача:
Есть список <input>-ов. Нужно после загрузки документа присвоить всем инпутам события "onclick", "onmouseover", "onmouseout".
Что только не пробовал - не получается в цикле сделать. Присваивает последнему элементу из цикла.
Подскажите:
1. Можно ли вообще такое сделать?
2. Каким методом нужно присваивать события?
Спасибо.
http://javascript.ru/basic/closure#primer-oshibochnogo-ispolzovaniya
Спасибо, прочитал ещё раз. Сразу не смог разглядеть проблему) Пойду ещё поковыряюсь... Потом отпишу, что да как.
Ребята, нужен хелп.
Вроде во всём разобрался, всё понятно, сделал так:
function StylisedRadio()
{
var wrapper = document.getElementById('StylisedRadioWrapper');
var array = wrapper.getElementsByTagName('input');
for (var i = 0; i<array.length; i++)
{
var el = array[i]; // input
var neighbor = el.nextSibling; // label
var child = neighbor.firstChild; // span
el.className = 'hide-input';
if(el.checked)
{
child.className = 'radio-on';
(function(i){
neighbor.onmouseover = function ()
{
array[i].nextSibling.firstChild.className = 'radio-on-over';
};
neighbor.onmouseout = function ()
{
array[i].nextSibling.firstChild.className = 'radio-on';
};
})(i);
}
else
{
child.className = '';
(function(i){
neighbor.onmouseover = function ()
{
array[i].nextSibling.firstChild.className = 'radio-off-over';
};
neighbor.onmouseout = function ()
{
array[i].nextSibling.firstChild.className = '';
};
neighbor.onclick = function ()
{
array[i].checked = 'true';
StylisedRadio ();
};
})(i);
};
};
};
В в Opera_9.50, Opera_9.60, Opera_9.64 и Opera_10.10 не работает. Не могу понять почему? O_o Где я накосячил?
Для большей юзабельности - ссылка:
http://tarik.kasperovich.ru/test/index.html
Спасибо.
var idList = ['id1', 'id2', 'id3'];
for (var i = 0; i < idList; i++) {
node = document.getElementById(idList[i]);
node.onclick = fn, node.onmouseover = fn, node.onmouseout = fn;
}
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot