Я новичок в JavaScript, и у меня есть JavaScript, который создает 8 кнопок изображения на HTML-странице. Я хочу вставить функцию в каждую созданную кнопку изображения, которая может вернуть определенный идентификатор, но проблема в том, что когда я нажимаю любую кнопку, я получаю только id: 8. Но я хочу id: 1 для первой кнопки и так далее. данных = {идентификатор: 1, ID: 2 ..... ID: 8} и некоторые изображенияКак указать идентификатор кнопки изображения, динамически созданной с использованием JavaScript?
for(var i=0;i<8;i++){
var x=data[i].image; //this is the image I gets from a JSON string
var y=data[i].name; //this is the name I gets from a JSON string
var id=data[i].id; //this is the id I gets from a JSON string
var body = document.getElementsByTagName("body")[0];
var myButton = document.createElement("input");
myButton.src=x;
myButton.name=String(id);
myButton.id=data[i].id;
myButton.type = "image";
body.appendChild(myButton);
//i need help with below section
myButton.onclick = function(){
console.log("this is my id ",myButton.id);
//this function will return only the`data[8].id every time
};
console.log(x);
console.log(y);
console.log(id);
}
Возможный дубликат [Закрытие внутренних циклов JavaScript - простой практический пример] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – Teemu
Да, это проблема закрытия , Во всех прослушивателях кликов * myButton * ссылается на последнюю кнопку. Вместо этого используйте 'this.id'. – RobG