我有一个脚本,它将li元素添加到ul,并根据用户在select元素中的选择为其分配一些属性。但是,我认为有必要确保ul元素中不存在li元素。但是,我不确定,但我认为数组不是为它分配变量,或者我的if语句比较数组有问题。当然,我可能完全没有了。我很难过。
function anotherCounty(){
var newCounty = document.forms['newForm'].county.value;
var ul = document.getElementById("counties");
var items = ul.getElementsByTagName("li");
var itemArray = new Array();
for (var i = 0; i < items.length; i++){
itemArray.push(items[i]);
}
if (itemArray.indexOf(newCounty)<'0'){//I've also tried ==-1 and <0
var new_item = document.createElement("li");
new_item.id = "addCounty[]";
new_item.innerHTML = newCounty;
ul.insertBefore(new_item, ul.firstChild);
}
}
答案 0 :(得分:1)
您正在将字符串与DOM元素进行比较。我认为这是你真正需要的:
itemArray.push(items[i].value);
答案 1 :(得分:1)
不使用indexOf,使用这种方法会更好:
function anotherCounty() {
var newCounty = document.forms['newForm'].county.value;
var ul = document.getElementById("counties");
var items = ul.getElementsByTagName("li");
for (var i = 0; i < items.length; i++){
if(items[i].value == newCounty) return;
}
var new_item = document.createElement("li");
new_item.id = "addCounty[]";
new_item.innerHTML = newCounty;
ul.insertBefore(new_item, ul.firstChild);
}
答案 2 :(得分:0)
我知道这个线程很旧,但是我遇到了同样的问题,对我有用的是
itemArray.push(items[i].innerHTML);