Javascript 如何移动a<;第1分部>;变成一个<;第2分部>;不移动整体<;第1分部>;并在<;第1部分>;?
这里是total JS新手,我试图用普通的JS/Html编写一个待办事项列表,其中“待办事项”中的元素在单击时可以以“完成”结尾。我已经使我的图标可点击,我已经设法将内容从一个div移动到另一个div,但我有几个问题,我似乎找不到问题所在: 1:为什么我的JS脚本只移动Javascript 如何移动a<;第1分部>;变成一个<;第2分部>;不移动整体<;第1分部>;并在<;第1部分>;?,javascript,function,appendchild,Javascript,Function,Appendchild,这里是total JS新手,我试图用普通的JS/Html编写一个待办事项列表,其中“待办事项”中的元素在单击时可以以“完成”结尾。我已经使我的图标可点击,我已经设法将内容从一个div移动到另一个div,但我有几个问题,我似乎找不到问题所在: 1:为什么我的JS脚本只移动而将我的整个“doList”div移动到我的“doneList”div中?这是父母的问题吗?(第24行)编辑:已解决 2:我到底是如何做到只移动一个元素,即我单击的元素,而不移动其他元素的?现在他们在出现时都有相同的ID,所以我想
而将我的整个“doList”div移动到我的“doneList”div中?这是父母的问题吗?(第24行)编辑:已解决
2:我到底是如何做到只移动一个元素,即我单击的元素,而不移动其他元素的?现在他们在出现时都有相同的ID,所以我想这会是个问题,所以。。。编辑:已解决
3:有没有办法给每个
一个不同的ID,并在单击后更改移动的
元素的ID
4:单击后,当我最终在右侧div中获得我的
元素时,我如何“重新启动”我的函数,以便我输入的下一个
元素在我移动的元素之后出现在“todo”而不是“done”中
以下是我迄今为止读过并尝试过的内容:在我的moveItem函数中更改父项和子项,在创建时为我的
元素提供ID,使用li.ID和classList删除并添加ID。删除/添加,阅读至少50个关于如何将div移动到另一个div的答案,但没有找到任何适合我需要的答案,因为我想移动一个.createElement创建的
点击并完成它,而不是单独移动一个div,移动已经在我的html中的元素集或融合两个div的内容
这是我的JS代码,我希望你能读懂我在这里要实现的目标,这是我的第一篇文章,也是我第一次接触JS和代码,加上我是法国人,还没有掌握所有的词汇,请耐心听我说
这是我的密码:
函数newItem(){
console.log(“内部newItem”)
//设置变量
让item=document.getElementById(“taskinput”).value;
设ul=document.getElementById('doList');
设li=document.createElement('li');
li.id='todotask';
//现在将文本放入列表项中
li.appendChild(document.createTextNode(item));
ul.appendChild(li);//将列表项放入无序列表中
document.getElementById(“taskinput”).value=”“;//删除当前todo中的内容
li.onclick=moveItem;//单击li时运行moveItem
}
功能项目(e){
var moveTo=this.parentElement.parentElement==doneList?todotask:doneList;
moveTo.appendChild(this.parentElement);
console.log(“移动到完成的项目”)
}
document.body.onkeyup=函数(e){
让item=document.getElementById(“taskinput”).value;
如果(e.keyCode==13){
log('enter pressed!');
newItem();
控制台日志(项目);
};
};
document.getElementById('addtask')。onclick=function(){
console.log('按下添加按钮!')
newItem()
}
待办事项清单
在moveItem
中,这是ul
。因此,您应该移动this
,而不是this.parentElement
另外,doList
或doneList
将是元素的父元素,而不是祖辈元素,因此需要更改三元表达式中的条件
返回时的目的地应该是doList
,todotask
是特定任务的ID。您也不应该像那样创建重复的ID。不需要为动态创建的任务提供ID
函数newItem(){
console.log(“内部newItem”)
//设置变量
让item=document.getElementById(“taskinput”).value;
设ul=document.getElementById('doList');
设li=document.createElement('li');
//现在将文本放入列表项中
li.appendChild(document.createTextNode(item));
ul.appendChild(li);//将列表项放入无序列表中
document.getElementById(“taskinput”).value=”“;//删除当前todo中的内容
li.onclick=moveItem;//单击li时运行moveItem
}
功能项目(e){
var moveTo=this.parentElement==doneList?doList:doneList;
moveTo.appendChild(这个);
log(“项目移动到”+(moveTo==doneList?“完成”:“ToDo”))
}
document.body.onkeyup=函数(e){
让item=document.getElementById(“taskinput”).value;
如果(e.keyCode==13){
log('enter pressed!');
newItem();
控制台日志(项目);
};
};
document.getElementById('addtask')。onclick=function(){
console.log('按下添加按钮!')
newItem()
}
待办事项清单
做
完成:
在moveItem
中,这是ul
。因此,您应该移动this
,而不是this.parentElement
另外,doList
或doneList
将是元素的父元素,而不是祖辈元素,因此需要更改三元表达式中的条件
返回时的目的地应该是doList
,todotask
是特定任务的ID。您也不应该像那样创建重复的ID。不需要为动态创建的任务提供ID
函数newItem(){
console.log(“内部newItem”)
//设置变量
让item=document.getElementById(“taskinput”).value;
设ul=document.getElementById('doList');
设li=document.createElement('li');
//现在将文本放入列表项中
li.appendChild(document.createTextNode(item));
ul.appendChild(li);//把它列出来