Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何迭代jQuery中的复选框列表?_Javascript_Jquery - Fatal编程技术网

Javascript 如何迭代jQuery中的复选框列表?

Javascript 如何迭代jQuery中的复选框列表?,javascript,jquery,Javascript,Jquery,不起作用;我收到的错误是,val和is未定义。我想反复检查对话框消息元素中的复选框,以便查看哪些复选框被选中,并为那些被选中的复选框执行一些其他代码,但这些错误正在发生。使用jQuery。each()函数: JQuery有.each() $('div')。每个(函数(idx){console.log(idx,this)}) 此为当前元素。使用$的一个优点是,这里的每一个都可以说是更干净、可读性更强的代码,而且您还可以获得链接的好处 但是值得注意的是(尽管可能与您的示例无关),for循环在迭代大

不起作用;我收到的错误是,
val
is
未定义。我想反复检查
对话框消息
元素中的复选框,以便查看哪些复选框被选中,并为那些被选中的复选框执行一些其他代码,但这些错误正在发生。

使用jQuery。each()函数:

JQuery有.each()

$('div')。每个(函数(idx){console.log(idx,this)})

为当前元素。使用$的一个优点是,这里的每一个都可以说是更干净、可读性更强的代码,而且您还可以获得链接的好处

但是值得注意的是(尽管可能与您的示例无关),for循环在迭代大型元素集合时很可能会执行得更好。比如你可以这样写

jQuery.each(jQuery("#dialog-message input[type='checkbox']"), function(index, chkbox) {
  alert(chkbox.val() + " " + chkbox.is("checked"));
});
let test = $('input'); 
for(let i = 0; i < test.length; i++){ 
    console.log(test[i].checked) 
}

for…in
的行为不符合您的预期

在您的例子中,
chkbox
不是复选框元素;它是一个整数,表示集合中项的索引。整数既没有
.value
也没有
.checked
属性,因此出现
未定义
错误

相反,请使用jQuery的:

$(“#对话框消息输入[类型=复选框]”)。每个(函数(){
log(`this.value}被选中:${this.checked}`);
});


正确的jQuery方法是。在函数内部,使用
$(this)
处理当前元素。您的最终目标是什么?如果您试图仅获取选中的输入,则无需对其进行迭代-只需使用的.可能的副本作为参考,在
中使用的而不是中的,
$(chkbox)
而不是将修复您的代码。这不是重复,Chris链接到的问题与如何用于…in/of循环无关。此问题和选定的答案添加了有用的信息。对于您的代码,
chkbox
是一个HTMLInputElement,而不是jQuery对象。感谢您使用
each
方法和
:checked
选择器工作!
let test = $('input'); 
for(let i = 0; i < test.length; i++){ 
    console.log(test[i].checked) 
}
test = $('input'); 
for(let i in test){ 
    if(!test.hasOwnProperty(i)) { 
        continue ; 
    } 
    console.log(test[i].checked) 
}