通过比较两个数组()JavaScript自动选择复选框

通过比较两个数组()JavaScript自动选择复选框,javascript,html,arrays,checkbox,Javascript,Html,Arrays,Checkbox,我有一些问题。我有一个带有复选框的部分,一个人可以选中或不选中。如果选中复选框,该值将发送到文本字段,我将存储该文本 当用户在页面上重新运行时,文本字段已由选中的值完成。但复选框未选中。所以我想在JavaScript中自动选中这些复选框 所以我得到了两个数组,一个是选项,另一个是选择的选项。我想根据数组目标[]自动选中复选框 我需要使用JavaScript而不是Jquery。这是我的代码模板 //选项数组 //选项数组 var数组=新数组(); 数组[0]=“一月”; 数组[1]=“二月”;

我有一些问题。我有一个带有复选框的部分,一个人可以选中或不选中。如果选中复选框,该值将发送到文本字段,我将存储该文本

当用户在页面上重新运行时,文本字段已由选中的值完成。但复选框未选中。所以我想在JavaScript中自动选中这些复选框

所以我得到了两个数组,一个是选项,另一个是选择的选项。我想根据数组目标[]自动选中复选框

我需要使用JavaScript而不是Jquery。这是我的代码模板

//选项数组
//选项数组
var数组=新数组();
数组[0]=“一月”;
数组[1]=“二月”;
数组[2]=“三月”;
数组[3]=“April”;
数组[4]=“可以”;
数组[5]=“Juny”;
数组[6]=“七月”;
数组[7]=“八月”;
数组[8]=“九月”;
数组[9]=“10月”;
数组[10]=“11月”;
数组[11]=“12月”;
var target=新数组();
目标[0]=“四月”;
目标[1]=“9月”;
var cbh=document.getElementById('checkbox');
var-val='';
var cap=“”;
var j=“”;
var t=document.getElementById('t');
//循环正在创建带有名称、值。。。
for(数组中的变量i){
//复选框的名称是它们的编号,因此我将I转换为字符串。
j=i.toString();
val=j;
//cap将是数组[i]的值/文本
var cb=document.createElement('input');
var label=document.createElement(“标签”);
cap=数组[i];
var text=document.createTextNode(cap);
cb.type='复选框';
儿童(cb);
cb.name=cap;
cb.value=val;
标签。附属物(cb);
label.appendChild(文本);
cbh.appendChild(标签);
cb.addEventListener('click',updateText)
}
函数updateText(){
t、 value=[null,…document.querySelectorAll('#checkbox[type=“checkbox”]”)reduce((s,el)=>el&&el.checked?s=(s | |“”)+el.value+'$#':s | |“”)
}
//document.querySelector('[name=“March”]')。单击()
//document.querySelector('[name=“mumment”]')。单击()
*{
框大小:边框框;
}
#资料{
填充物:5px;
宽度:100vw;
}
.多选{
溢出:可见;
填充:0;
左侧填充:1px;
边界:无;
背景色:#eee;
宽度:100vw;
空白:正常;
高度:200px;
}
.复选框{
高度:100px;
宽度:100px;
边框:1px实心#000;
背景色:白色;
左边距:-1px;
显示:内联块;
}
标签{
显示:内联块;
边框:1px灰色实心;
填充物:5px;
}
All |选中

根据目标数组中是否存在复选框进行设置时,只需设置复选框的checked属性即可

//选项数组
//选项数组
var数组=新数组();
数组[0]=“一月”;
数组[1]=“二月”;
数组[2]=“三月”;
数组[3]=“April”;
数组[4]=“可以”;
数组[5]=“Juny”;
数组[6]=“七月”;
数组[7]=“八月”;
数组[8]=“九月”;
数组[9]=“10月”;
数组[10]=“11月”;
数组[11]=“12月”;
var target=新数组();
目标[0]=“四月”;
目标[1]=“9月”;
var cbh=document.getElementById('checkbox');
var-val='';
var cap=“”;
var j=“”;
var t=document.getElementById('t');
//循环正在创建带有名称、值。。。
for(数组中的变量i){
//复选框的名称是它们的编号,因此我将I转换为字符串。
j=i.toString();
val=j;
//cap将是数组[i]的值/文本
var cb=document.createElement('input');
var label=document.createElement(“标签”);
cap=数组[i];
var text=document.createTextNode(cap);
cb.type='复选框';
儿童(cb);
cb.name=cap;
cb.value=val;
cb.checked=目标指数(上限)!=-1;
标签。附属物(cb);
label.appendChild(文本);
cbh.appendChild(标签);
cb.addEventListener('click',updateText)
}
函数updateText(){
t、 value=[null,…document.querySelectorAll('#checkbox[type=“checkbox”]”)reduce((s,el)=>el&&el.checked?s=(s | |“”)+el.value+'$#':s | |“”)
}
//document.querySelector('[name=“March”]')。单击()
//document.querySelector('[name=“mumment”]')。单击()
*{
框大小:边框框;
}
#资料{
填充物:5px;
宽度:100vw;
}
.多选{
溢出:可见;
填充:0;
左侧填充:1px;
边界:无;
背景色:#eee;
宽度:100vw;
空白:正常;
高度:200px;
}
.复选框{
高度:100px;
宽度:100px;
边框:1px实心#000;
背景色:白色;
左边距:-1px;
显示:内联块;
}
标签{
显示:内联块;
边框:1px灰色实心;
填充物:5px;
}
All |选中

根据您的设置,您需要遍历所有数组元素以找到匹配的值,然后选中匹配的复选框


但是,我建议使用另一种方法:在目标数组中,存储复选框的索引。这样你就有了直接的参考。

嘿,谢谢你的回答。但你能更准确地说明你的建议吗?我不确定我是否明白。正如我所说,目标将根据文本字段进行更新,并包含所选的值。也许如果你在解决方案中加入snipet,我会明白你的意思。