Javascript 选中时获取复选框数据ID->;将VAL推送到阵列

Javascript 选中时获取复选框数据ID->;将VAL推送到阵列,javascript,for-loop,ecmascript-6,Javascript,For Loop,Ecmascript 6,当复选框变为选中状态时,我尝试使用选中的复选框数据id值不断更新数组(为了触发,我在父元素上添加了一个单击事件侦听器,以重新检查所有状态)。我目前有下面的代码,这在某种程度上是可行的,但出于某些原因,会将重复的值推到数组中 function getCur(event) { let chkst = document.querySelector('.parent'); if (chkst) { chkst.addEventListener(&

当复选框变为选中状态时,我尝试使用选中的复选框
数据id
值不断更新数组(为了触发,我在父元素上添加了一个单击事件侦听器,以重新检查所有状态)。我目前有下面的代码,这在某种程度上是可行的,但出于某些原因,会将重复的
推到数组中

function getCur(event) {
        let chkst = document.querySelector('.parent');
        if (chkst) { 
            chkst.addEventListener("click", checkWtc);
        } else {
          getCur();
        }
      }
    
     function checkWtc(event) { 
           let chkstats = document.querySelectorAll('input.mychex[type=checkbox]:checked');
           if (chkstats) { 
              for (let i = 0; i < chkstats.length; i++) {
                chIds.push(chkstats[i].getAttribute("data-id"));
                console.log(chIds);
                alert(chIds); 
              };
           } else {
             checkWtc();
           }
      }
函数getCur(事件){ 让chkst=document.querySelector('.parent'); 如果(chkst){ chkst.addEventListener(“单击”,选中WTC); }否则{ getCur(); } } 函数检查WTC(事件){ 让chkstats=document.querySelectorAll('input.mychex[type=checkbox]:checked'); 如果(chkstats){ for(设i=0;i i、 e.在下面的警报中,我从先前选中的
数据id
中获得一致的重复id,然后将新id更新到阵列中:


我认为应该这样做(向父级添加一个侦听器)

//包含已检查id的数组
检查常量=[];
//在父级上添加eventlistener侦听器(侦听更改事件)
document.querySelector('.parent').addEventListener('change',e=>{
//获取复选框id
const id=e.target.id;
//如果您需要它作为数据id,只需将上面的更改为
//const id=e.target.dataset.id;
//如果选中目标,则将id添加到数组中
如果(e.target.checked)选中,则推送(id);
//如果不是,请将其删除
否则检查。拼接(检查。indexOf(id),1);
//这只是显示选中id的
log.innerHTML=JSON.stringify(选中)
})

福
酒吧
巴兹

由于您没有提供html,我添加了一些

  • 将侦听器直接应用于复选框元素
  • 当它被调用时,只需抓取数据id为attr的元素,因为这些是您所关心的
  • 将html集合更改为数组,然后映射该数组以提取每个元素的数据id
  • (函数addDataIdListeners(){
    const els=Array.prototype.slice.call(document.querySelectorAll('[dataid]');
    els.forEach(函数(el){el.addEventListener('change',checkWtc);});
    })();
    函数检查WTC(事件){
    const chkstats=Array.prototype.slice.call(document.querySelectorAll(“[data id]:checked”);
    设arr=chkstats.map(函数(c){返回c.getAttribute('data-id');});
    console.log(arr);//如果需要,在此处返回arr或进一步操作它
    }