for (var i = 0; i < max; i++) {
deleteButton[i].addEventListener('click', function (e) {
AddPatientVitalsModel.globalData.splice(i, 1);
});
}
当我点击一个按钮时,会添加一个新表...我在表中更改了一些信息并再次添加另一个表...我删除了这个表...但是数组值确实删除了第一个索引
i 的值始终为零,它会删除数组中的第一项。如何确保每个表具有不同的ID。
对于每次点击,我觉得我的价值总是从零开始......
答案 0 :(得分:4)
你在每个循环中覆盖i
的值。您可以使用匿名函数按值传递变量:
for (var i = 0; i < max; i++) {
(function(i){ //i is now defined within the scope of this anonymous function
deleteButton[i].addEventListener('click', function (e) {
AddPatientVitalsModel.globalData.splice(i, 1);
}, true);
})(i); //Pass i to the anonymous function
}
请注意,i
在匿名函数中可以有不同的名称,但没有区别。
另一个通知:将三个参数传递给addEventListener
,因为如果省略第三个参数,很多浏览器都会抛出错误。
答案 1 :(得分:1)
因为 i 范围是在事件之外。你需要从变量e得到索引,或者可以使用这段代码:
for (var i = 0; i < max; i++) {
var ii = i;
deleteButton[i].addEventListener('click', function (e) {
AddPatientVitalsModel.globalData.splice(ii, 1);
});
}
但我不确定它是否适用于javascript。