我正在尝试对用户从列表中选择项目进行一些验证。我想通过检查<li>
是否已经在数组中来确保项目未添加两次。这就是我正在尝试而且它不起作用。
$(".List").on("click", "li", function () {
var i = 0;
var checkArr = [];
var div = $("#AddedItems");
var parent = $(this).closest("ul");
var itemtoadd = parent.find("[data-id]").attr("data-id");
var name = parent.find("[data-name]").attr("data-name");
alert(itemtoadd + name);//checking
var itemtoadd = ("<li id = " + itemtoadd + " class = \"itemAdd\">" + name + "</li>");
checkArr.push(itemtoadd); //put one in to check against?
checkArr.forEach(item)
{
if (item == itemtoadd)
alert("this item has already been added");
else {
checkArr.push(itemtoadd);
alert(itemtoadd);
$(itemtoadd).appendTo(div);
}
}
// div.html(itemtoadd);
});
答案 0 :(得分:1)
这里至少有三个问题:
Array.forEach
- 它需要一个带项目的功能。alert
案例。checkArr
作为本地变量 - 每次进入该函数时,您都会获得一个空数组。说到这一切,你可以在不保留阵列的情况下实现目标。我相信你可以用你的第一个提醒替换所有内容:
if ($('#' + itemtoadd, div).length == 0) {
itemtoadd = ("<li id = " + itemtoadd + " class = \"itemAdd\">" + name + "</li>");
div.append(itemtoadd);
}
else {
alert("this item has already been added");
}