Javascript — проблема с областью действия и передачей параметров в динамически создаваемый обработчик событий

В приведенном ниже коде вы увидите, что я пытаюсь определить обработчик событий для image.onclick, который принимает дополнительные параметры, я объявлял эти параметры внутри цикла while, надеясь, что javascript определен охват таким образом, но это не так. В основном все обработчики событий здесь получают самое последнее значение, которое я даю переменным id и section_id. Любая идея о том, как справиться с ситуацией, когда я хочу динамически генерировать эти обработчики?

function handlePicturesResult(){
    if (req.readyState == 4) { // Complete
        if (req.status == 200) { // OK response

            var el = document.getElementById('pictureHolder');
            while( el.hasChildNodes() ){
                el.removeChild(el.lastChild);
            }

            var tempObject = JSON.parse(req.responseText);
            var pictures = tempObject.images;
            var i=0;

            while(i<pictures.length){

                var picIndex = i;

                var image= new Image(120,80);
                image.src = 'images/' + pictures[i].url;
                image.width = 120;
                image.height = 80;
                var id = pictures[picIndex].id;
                var section_id = pictures[picIndex].sectionId;
                image.onclick = function(event){
                    deleteImage(event,id,section_id);
                }


                var txtNode = document.createTextNode(pictures[picIndex.valueOf()].id); 
                el.appendChild(image);
                el.appendChild(txtNode);
                i++;
            }
        } else {
        alert("Problem: " + req.statusText);
        }
    }

}
5
задан flips 1 June 2012 в 19:51
поделиться