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


Автор: qpeHukc 1.8.2007, 09:07
формирую в цикле объекты html. для каждого из них по событию вызывается функция с параметром, зависящим от его номера(от индекса, под которым он создался).

Проблема : все функции вызываются с индексом, равным последнему элементу цикла.

Упрощенный пример :

Код

<body>

    <div id="targetDiv">
    </div>

    <script type="text/javascript">
    
    function createContents()
    {
        for(i=0;i<5;i++)
        {
            var newObj = document.createElement("div");
            newObj.innerHTML = "i = " + i;
            newObj.onclick = function() {alertValue(i);};
            
            targetDiv.appendChild(newObj);
        }
    }
    
    function alertValue(valueToAlert)
    {
        alert(valueToAlert);
    }
    
    createContents();
    
    </script>
    
</body>


при нажатии на любой див выскакивает алерт с сообщением 5

а надо - 0, 1, 2...

Автор: Zeroglif 1.8.2007, 11:52
qpeHukc, 

вам нужно разобраться в замыканиях:

http://forum.vingrad.ru/forum/topic-140148/anchor-entry1057724/0.html
http://forum.vingrad.ru/topic-131483.html
http://forum.vingrad.ru/index.php?showtopic=120066&view=findpost&p=926930
http://forum.vingrad.ru/topic-122262/unread-1.html

Автор: qpeHukc 1.8.2007, 14:06
спасибо за ссылки, ощутимо продвинули мои знания JS

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