javascript中的一种奇怪行为,涉及懒散
Kind of odd behavior in javascript involving lazyness
本文关键字:一种 javascript 更新时间:2023-09-26
javascript中奇怪的"懒惰"行为。这台运行良好:
$(document).on("change", "#dropdown-menu-category-chk", function(){
$("#dropdown-menu-category input[type='checkbox']").prop('checked', this.checked);
});
$(document).on("change", "#dropdown-menu-category2-chk", function(){
$("#dropdown-menu-category2 input[type='checkbox']").prop('checked', this.checked);
});
$(document).on("change", "#dropdown-menu-category3-chk", function(){
$("#dropdown-menu-category3 input[type='checkbox']").prop('checked', this.checked);
});
// and so on....
但是在这个代码中,变量i==5!
function setDropDowns(){
var idList = ['category', 'category2', 'category3', 'category4', 'category5']
for(var i = 0; i < idList.length; i++){
$(document).on("change", "#dropdown-menu-"+idList[i]+"-chk", function(){
$("#dropdown-menu-" +idList[i] +" input[type='checkbox']").prop('checked', this.checked);
debugger; // i == 5; idList[i] === undefined
});
}
}
即使我说
for(var i = 0; i < idList.length; i++){
var id = dropDownCheckBoxItemList[i];
$(document).on("change", "#dropdown-menu-"+id+"-chk", function(){
它不起作用,因为在执行代码时id
将等于'category5'
!
如何使用循环使其工作?我不想打破DRY的规则。
您需要在循环的每次迭代中捕获i
的值。您可以通过引入一个具有立即调用的函数表达式的新作用域来实现这一点:
for(var i = 0; i < idList.length; i++) {
(function (i) {
$(document).on("change", "#dropdown-menu-"+idList[i]+"-chk", function() {
// etc...
});
}(i));
}
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 有没有一种方法可以从Javascript检测特定的应用程序是否安装在(AndroidiOS)设备上
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 有没有一种方法可以在Javascript中进行可变递归currying
- 有没有一种方法可以通过只引用JavaScript来执行代码
- JavaScript Array unshift() 以一种不可变的方式
- 在Javascript(jquery)中,有没有一种方法可以检测页面锚点何时更改
- JavaScript:动态扩展原型是一种糟糕的做法
- 是否有一种方法可以使用公共代码库在Java和JavaScript中进行输入验证
- 有没有一种方法可以使用Javascript检索谷歌表单ITSELF(而不是电子表格)的数据
- ES6 const,用于在JavaScript中创建对象原型;这是一种模式吗
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 在javascript中使用覆盖变量是不是一种糟糕的做法
- 解析一个复杂的JavaScript表达式,将其改写为另一种格式
- 在javascript regexp中捕获多个变量的一种更简单的方法
- 一种JavaScript,可在文档就绪时自动点击flash对象
- 需要修改Google Analytics Tracker Code (GATC)[一种Javascript]以使其能够在