繁体   English   中英

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

[英]check if specific li element exists in ul

我有一个脚本,可以将 li 元素添加到 ul 并根据用户在 select 元素中的选择为其分配一些属性。 但是,我认为有必要确保 li 元素不存在于 ul 中。 但是,我不确定,但我认为要么数组没有为其分配变量,要么比较数组的 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);
  }  
}

您正在将字符串与 DOM 元素进行比较。 我认为这就是你真正需要的:

itemArray.push(items[i].value);

而不是使用 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);

}

我知道这个线程很旧,但我遇到了同样的问题,对我有用的是

itemArray.push(items[i].innerHTML);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM