Javascript从dropdownlist中删除重复项

Javascript从dropdownlist中删除重复项,javascript,Javascript,我有javascript代码,它从包含类别节点的xml中读取,并用它填充下拉列表。每次用户创建新产品列表时,都会创建该类别节点。但是,这意味着在读取xml时,类别中会填充诸如Camera、Camera、Camera等项目。我如何删除该选项,或者是否有一个独特的选项 function loadXMLcat() { var xmlhttp=false; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else {// c

我有javascript代码,它从包含类别节点的xml中读取,并用它填充下拉列表。每次用户创建新产品列表时,都会创建该类别节点。但是,这意味着在读取xml时,类别中会填充诸如Camera、Camera、Camera等项目。我如何删除该选项,或者是否有一个独特的选项

function loadXMLcat()
{
var xmlhttp=false;
 if (window.XMLHttpRequest)
{
  xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","auction.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 
var category;
var str;
var i;
var j;
str=("<p>Category : <select onchange=\"reveal(this)\" name=category>");
var x=xmlDoc.getElementsByTagName("Product");
if(x.length>0)
{
    for (i=0;i<x.length;i++)
    {
        category=xmlDoc.getElementsByTagName("Category");
        str+="<option value=" + category[i].childNodes[0].nodeValue + ">" + category[i].childNodes[0].nodeValue + "</option>"
        /**var arr = category;
        var sorted_arr = arr.sort()
        var results = [];
        for (var i = 0; i < arr.length - 1; i++) 
        {
            if (sorted_arr[i + 1] !== sorted_arr[i]) 
            {
                str+="<option value=" + arr[i] + ">" + arr[i] + "</option>"
                str+="<option value=" + sorted_arr[i] + ">" + sorted_arr[i] + "</option>"
            }
        }**/
    }
    str+="<option id=\"others\" value=\"Other\">Other</option>";
}
else
str+="<option id=\"others\" value=\"Other\">Other</option>";
str+=("</select></p>");
document.getElementById('category').innerHTML=str;
}
函数加载xmlcat()
{
var xmlhttp=false;
if(window.XMLHttpRequest)
{
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
open(“GET”,“auction.xml”,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var类别;
var-str;
var i;
var j;
str=(“Category:”);
var x=xmlDoc.getElementsByTagName(“产品”);
如果(x.length>0)
{

对于(i=0;i这里是相同的循环,检查类别是否已添加到选择框中。我还添加了contains()函数以快速测试重复项

function loadXMLcat()
{
  var xmlhttp=false;
  if (window.XMLHttpRequest)
  {
    xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.open("GET","auction.xml",false);
  xmlhttp.send();
  xmlDoc=xmlhttp.responseXML; 

  var str;
  var i;
  var j;
  str=("<p>Category : <select onchange=\"reveal(this)\" name=category>");
  var categoryList= []; //Array to contains the distinct values
  var x=xmlDoc.getElementsByTagName("Product");
  var categories = xmlDoc.getElementsByTagName("Category");
  if(x.length>0)
  {
    for (i=0;i<x.length;i++)
    {
        var category=categories[i].childNodes[0].nodeValue;
        var currentOption ="<option value=" + category + ">" + category  + "</option>";
        //Verify is category has already be added
        if(!contains(categoryList,category)){
            categoryList.push(category);
            str += currentOption;
        }
    }
    str+="<option id=\"others\" value=\"Other\">Other</option>";
  }
  else
    str+="<option id=\"others\" value=\"Other\">Other</option>";
  str+=("</select></p>");
  document.getElementById('category').innerHTML=str;
}

//Utility function to quickly verify if an array contains an element.
function contains(arr, x) {
    return arr.filter(function(elem) { return elem == x }).length > 0;
}
函数加载xmlcat()
{
var xmlhttp=false;
if(window.XMLHttpRequest)
{
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
open(“GET”,“auction.xml”,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var-str;
var i;
var j;
str=(“Category:”);
var categoryList=[];//要包含不同值的数组
var x=xmlDoc.getElementsByTagName(“产品”);
var categories=xmlDoc.getElementsByTagName(“类别”);
如果(x.length>0)
{
对于(i=0;i=0;
}

1st将您的选项放入一个数组中并从此数组中删除重复项:请参阅它似乎返回重复的[object element]only,它说arr.sort不是一个函数。你能发布你的代码副本吗?@JonathanLarouche我已经添加了它,似乎它没有向列表中添加新的项目。我已经更新了答案,类别变量设置不正确,只有第一个项目会被添加。你能重试吗?它说无法读取v处未定义的属性0ar category Line我想我已经找到了原因。我需要添加getElementByTagName并将其添加到变量中。我添加了一个变量categories来解决这个问题。