Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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 获取元素内的复选框_Javascript_Html_Checkbox - Fatal编程技术网

Javascript 获取元素内的复选框

Javascript 获取元素内的复选框,javascript,html,checkbox,Javascript,Html,Checkbox,我有一个包含一些和。 现在,我想遍历div的所有元素,如果元素是复选框并选中,则执行一些操作。我已经试过了 var e = document.getElementById("myDiv"); var c; for(c in e.children){ if(c.checked) { //... } } 但是c.checked始终是未定义的。 有人能告诉我我是怎么做到的吗?你可以直接去瞄准你的:选中的,使用: const ckbChecked = document.

我有一个
包含一些

。 现在,我想遍历div的所有元素,如果元素是复选框并选中,则执行一些操作。我已经试过了

var e = document.getElementById("myDiv");
var c;
for(c in e.children){
    if(c.checked) {
        //...
    }
}
但是
c.checked
始终是未定义的。
有人能告诉我我是怎么做到的吗?

你可以直接去瞄准你的
:选中的
,使用:

const ckbChecked = document.querySelectorAll("#myDiv input[type=checkbox]:checked");
或者一个接一个,然后根据布尔值
元素确定每个元素的处理方法。选中属性状态:

const ckb=document.queryselectoral(“#myDiv input[type=checkbox]”);
[…ckb].forEach(el=>{
如果(el.checked){
//检查完毕!
控制台日志(el.value)
el.最近的(“标签”).style.background=“黄金”;
}否则{
//没有检查一个
//…做点别的
el.最近的(“标签”).style.background=“灰色”;
}
});

福
酒吧
巴兹
let checkbox=[…document.querySelectorAll('input[type=checkbox])]
复选框。forEach(复选框=>{
如果(复选框。选中){
console.log('我被选中',复选框)
}
})

实际选中复选框。旧的方法是选择输入并检查它们是否被选中,现代的方法是,只需使用选择器来获取选中的输入

var oldWay=document.getElementById(“myDiv”).getElementsByTagName(“输入”);
对于(var i=0;i使用以下公式

var匹配=[];
var searchEles=document.getElementById(“myDiv”).children;
对于(var i=0;i

c
在您的
中,因为in
循环是数组的索引,这就是为什么您试图访问选中的属性时未定义它的原因

以下代码适用于您:

<div id="my-div">
  <input type="checkbox" />
  <input type="checkbox" checked="checked" />
  <input type="checkbox" />
  <input type="checkbox" />
</div>

JS:

让myDiv=document.getElementById('my-div');
for(设i=0;i
无论如何,您的代码实际上非常接近。它应该是
,而不是
中的

var e=document.getElementById(“myDiv”);
var c;
适用于(c/e.儿童){
如果(c.勾选){
控制台日志(“获胜”)
}
}


Jquery是允许的?为什么不选择复选框?@kannan您看到问题中的Jquery标记了吗?请发布附带的HTML。
document.querySelectorAll(“#myDiv>input”)
应该可以帮助您开始。获取
#myDiv
节点列表下的所有输入,有什么特殊的原因需要分解吗?@ProfessorAllman预防措施:因为它不是一个实际的数组。分解使它成为一个数组。用户没有要求,但最好只循环复选框而不是所有输入
let myDiv = document.getElementById('my-div');

for (let i = 0; i < myDiv.children.length; i++) {
  console.log(myDiv.children[i]);
  if (myDiv.children[i].nodeName.toLowerCase() === 'input') {
    console.log(myDiv.children[i].checked);
  }
}