【问题标题】:delete duplicate element in selected option删除所选选项中的重复元素
【发布时间】:2016-05-10 02:07:13
【问题描述】:

我选择了两个选项:第一个是联系人,第二个是联系人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 的元素,预测结果是一个没有重复元素的列表

【问题讨论】:

标签: javascript php jquery


【解决方案1】:

我会创建一个数组来存储每次迭代的每个 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);
        }
    }
}

【讨论】:

    【解决方案2】:

    您可以在调用 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);
    
            }
    

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      相关资源
      最近更新 更多