我有这些复选框,其中包含我想存储并传递给php的值。 我的函数假定检查每个对象,并评估是否已检查您的对象,然后将它们从数组中推入/删除:
function isChecked(){
let distributionEL = document.querySelector("[name='distribution']");
console.log(distributionEL.value);
sendingLists.forEach(function(list) {
let sendSMSArr = distributionEL.value.split(',');
if(list.checked == true){
sendSMSArr.push(list.value);
} else {
let index = sendSMSArr.indexOf(list.value);
if (index > -1) {
sendSMSArr.splice(index, 1);
}
distributionEL.value = sendSMSArr.join(',');
});
}
现在发生的是该函数重复数组的现有元素,然后像这样添加新值。假设我的数组如下所示:
sendSMSarr = ['1','2']
,然后在执行if时将其推到新值'3':
sendSMSarr = ['1','2','1','2','3']
我想存储这些值而不重复。
关于此处的其他一些数据:
isChecked()在页面加载后和每次搜索后调用。您可以在搜索栏中搜索这些复选框。每次搜索后,将整个div清空(div.innerHTML = '')
,然后填充结果。
然后:
//每次搜索后调用func
listR.addEventListener('change',function(){ isChecked(); })
distributionEL是一个隐藏的输入,我用于将所需的值存储在字符串中,以便将其传递给php,然后转换为数组agian,以便我可以遍历它。
发送列表是我页面(document.querySelector(.checkboxes))
设法解决问题:
每个复选框在选中时都会添加,在未单独选中时会删除,但是当我一起选中其中几个而不取消选中其他复选框时,它就会重复出现。显然,我希望能够做到这一点而无需取消选中