你可能会做这种方式,但要看你的需求。
基本上你使用一个循环而不是两个,如果arr1的元素存在于arr2中,那么检查,否则取消选中。
document.getElementById("clickMe").onclick = displayList;
function displayList() {
var arr1 = ["apple", "banana", "grapes", "orange", "kiwi", "guava"];
var arr2 = ["apple", "orange", "kiwi"];
var arrData;
var output = "";
for (var i = 0; i < arr1.length; i++) {
if (arr2.contains(arr1[i])) {
arrData = arr1[i];
output += '<input type="checkbox" value=' + arrData + ' name="box2" checked >' + ' ' + arrData + ' ' + '<br><br>';
document.getElementById("demo2").innerHTML = output;
}
else{
arrData = arr1[i];
output += '<input type="checkbox" value=' + arrData + ' name="box2" >' + ' ' + arrData + ' ' + '<br><br>';
document.getElementById("demo2").innerHTML = output;
}
}
}
Array.prototype.contains = function(element){
return this.indexOf(element) > -1;
};
<button id="clickMe">click me</button>
<div id="demo"></div>
<div id="demo2"></div>
这里是一个丑陋的版本,你可以用剪接来删除它,然后你会留在不存在的东西。
document.getElementById("clickMe").onclick = displayList;
function displayList() {
var arr1 = ["apple", "banana", "grapes", "orange", "kiwi", "guava"];
var arr2 = ["apple", "orange", "kiwi"];
var arrData;
var output = "";
for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
if (arr1[i] === arr2[j]) {
arrData = arr1[i];
output += '<input type="checkbox" value=' + arrData + ' name="box2" checked >' + ' ' + arrData + ' ' + '<br><br>';
document.getElementById("demo2").innerHTML = output;
arr1.splice(i,1);
}
}
}
for (var x = 0;x <=arr1.length-1;x++){
\t arrData = arr1[x];
\t output += '<input type="checkbox" value=' + arrData + ' name="box2" >' + ' ' + arrData + ' ' + '<br><br>';
document.getElementById("demo2").innerHTML = output;
}
}
<button id="clickMe">click me</button>
<div id="demo"></div>
<div id="demo2"></div>
在这个版本中,你可以让你的嵌套循环,而且它组织检查和未选中。通过这种方式,选中的复选框可以单独放置以取消选中。再一次,这取决于要求。
我认为这个问题已经有了答案像10分钟前。 –
@TenTenPeter我的互联网中途停止工作! –