检查ul中是否存在特定的li元素

时间:2012-12-31 00:39:22

标签: javascript

我有一个脚本,它将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);
  }  
}

3 个答案:

答案 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);