Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Проблема с динамическим добавлением события


Автор: fclmfan 20.11.2009, 15:43
всем привет!
такой код
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<script>
function init(){
    var frm=document.fm;
    for (var i=0;i<frm.elements.length;i++){
        var tempbtn=frm.elements[i];
        tempbtn.attachEvent("onclick", function(){alert(i)});
    }
}
</script>
</head>

<body onload="init()">
<form name="fm">
  <input type="button" name="btn1" value="btn1" />
  <input type="button" name="btn2" value="btn2" />
  <input type="button" name="btn3" value="btn3" />
</form>
</body>
</html>


динамически добавляю события к кнопкам, вроде все нормально, но когда кликаю по ним то высвечивается постоянно 3, хотя по логике должно быть: кликаю на btn1 высвечивается 0, на btn2 высвечивается 1 и т.д.

как это реализовать правильно?

Автор: bars80080 20.11.2009, 15:57
попробуйте так:
Код

        tempbtn.aa = i;
        tempbtn.attachEvent("onclick", function(){this.aa});

Автор: fclmfan 20.11.2009, 16:39
что-то не получается, и на сколько я слышал attachEvent не понимает this....

Автор: diadiavova 21.11.2009, 00:19
Для ИЕ как-то так надо сделать
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<script>
function init(){
    var frm=document.fm;
    for (var i=0;i<frm.elements.length;i++){
    var tempbtn=frm.elements[i];
        tempbtn.remVal = i;
        tempbtn.onclick =  function(){alert(event.srcElement.remVal);}
    }
}
</script>
</head>
<body onload="init()">
<form name="fm">
  <input type="button" name="btn1" value="btn1" />
  <input type="button" name="btn2" value="btn2" />
  <input type="button" name="btn3" value="btn3" />
</form>
</body>
</html>

Автор: fclmfan 23.11.2009, 08:30
ага, спасибо получилось.......

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)