删除所选选项中的重复元素

时间:2016-02-01 14:58:14

标签: javascript php jquery

我有两个选择的选项:第一个是联系人,第二个是联系人2。第一个选择选项中的元素将添加到第二个列表中。 下面的函数让我添加所有元素没有问题,但我想只添加具有唯一ID的元素,因为第一个列表包含许多重复的选项ID。

function addAllElement(object){
    contacts = document.getElementById('contact');
    long = object.options.length;
    for (i=0;i<long;i++){
        txt = object.options[i].text;
        valor = object.options[i].value;
        idd=object.options[i].id;
        addOption(contact2,i,idd,txt,valor);
    }
}

这是具有重复ID

的列表的示例
<select name="contacts" id="contacts" multiple="">
    <option value="7147582,2" id="77">Test</option>
    <option value="7189466,2" id="62">test2</option>
    <option value="7" id="62">contact3</option>
    <option value="72" id="64">ERRZERZE, zerzerze</option>
    <option value="71" id="62">contact 5</option>
    <option value="72y" id="001">contact 6</option>
</select>

当您看到许多具有相同ID的元素时,预测结果是没有重复元素的列表

2 个答案:

答案 0 :(得分:2)

我会创建一个数组,每次迭代存储每个id。如果已创建id,则不要将其添加到第二个select。以这种方式重做你的功能:

function addAllElement(object) {
    var i, valor, idd, txt;
    var long = object.options.length;
    var ids = [];
    for (i = 0; i < long; i++) {
        txt = object.options[i].text;
        valor = object.options[i].value;
        idd = object.options[i].id;
        if (ids.indexOf(idd) == -1) {
            addOption("contact2", i, idd, txt, valor);
            ids.push(idd);
        }
    }
}

答案 1 :(得分:0)

在调用addOption方法之前,您可以检查具有该id的元素的长度:

 for (i=0;i<long;i++){
            txt = object.options[i].text;
            valor = object.options[i].value;
            idd=object.options[i].id;

            if(document.getElementById(idd).length)
              addOption(contact2,i,idd,txt,valor);

        }