2

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

3 に答える 3

1

文字列を DOM 要素と比較しています。これが実際に必要なものだと思います:

itemArray.push(items[i].value);
于 2012-12-31T00:43:43.537 に答える
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);

}
于 2012-12-31T00:51:59.867 に答える
0

このスレッドが古いことは知っていますが、同じ問題が発生したばかりで、うまくいったのは

itemArray.push(items[i].innerHTML);
于 2020-05-21T17:41:03.080 に答える