Javascript 仅向列表中添加新的列表项
我对JavaScript还相当陌生,所以我正在寻找最简单的解决方案(也不是寻找jQuery解决方案) 我正在尝试将单击的列表项添加到新列表中,前提是单击的列表项不在新列表中。我已成功地将单击的列表项添加到新列表中,但我无法创建一个功能正常的Javascript 仅向列表中添加新的列表项,javascript,html,Javascript,Html,我对JavaScript还相当陌生,所以我正在寻找最简单的解决方案(也不是寻找jQuery解决方案) 我正在尝试将单击的列表项添加到新列表中,前提是单击的列表项不在新列表中。我已成功地将单击的列表项添加到新列表中,但我无法创建一个功能正常的if语句来检查当前项的新列表 window.onload=函数(){ var ul=document.getElementById('bulk'); ul.addEventListener('click',函数(e){ var目标=e.target; whi
if
语句来检查当前项的新列表
window.onload=函数(){
var ul=document.getElementById('bulk');
ul.addEventListener('click',函数(e){
var目标=e.target;
while(target&&target.parentNode!==ul){
target=target.parentNode;
如果(!target){return;}
}
如果(target.tagName=='LI'){
var节点=document.createElement(“LI”);
var textnode=document.createTextNode(target.id);
var textarea=document.getElementById(“test1”);
如果(!textarea.querySelector(target.id)){
node.appendChild(textnode);
document.getElementById(“test1”).appendChild(节点);
}
}
});
}
因为在一个文档中不应该有多个具有相同ID的元素,所以我更改了一些内容,使每个元素的唯一ID位于数据集属性数据ID
中
除此之外,还需要使用querySelector()
来确定这样的节点是否已经在目标列表中
var ul=document.getElementById('bulk');
var destination=document.getElementById(“test1”);
ul.addEventListener('click',函数(e){
var目标=e.target;
while(target&&target.parentNode!==ul){
target=target.parentNode;
如果(!目标){
回来
}
}
如果(target.tagName=='LI'){
var id=target.dataset.id;
var节点=document.createElement(“LI”);
node.dataset.id=id;
var textnode=document.createTextNode(“id为“+id”的元素);
if(destination.querySelector(“[data id=“+id+”])){
回来
}
node.appendChild(textnode);
destination.appendChild(节点);
}
});代码>
一个问题是您正在创建具有重复ID的元素。这通常会引起问题。第二个问题(可能是实际问题)是,您正在使用querySelector搜索id,但忘记了“#”(因此,if(!textarea.querySelector(“#”+target.id))