2012-12-31 50 views
2

我有一個腳本,將li元素添加到ul中,並根據用戶在select元素中的選擇爲其分配一些屬性。然而,我認爲有必要確保li元素不存在於ul中。然而,我不確定,但我認爲數組不是分配變量,或者我的if語句有什麼問題來比較數組。當然,我可能完全不在。我很難過。檢查是否存在特定的li元素ul

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); 
    } 
} 

回答

1

您正在比較字符串與DOM元素。我想這是你真正需要的:

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

這和其他策略都使得很多感。但是,由於某種原因,他們沒有工作。我不相信我沒有添加價值屬性。感謝至少指出。 –

+0

也許你應該創建一個現場演示,例如在jsfiddle.net上? – Christophe

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

}