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