javascript - 一个节点在 DOM 中不能有多个父节点;如何规避这个?
问题描述
假设我正在构建一个具有文件夹功能的 Todo 应用程序(我可以将 Todos 存储在文件夹中)。
所以我有一堂课:
class Folder{
constructor(){
this.title = "new folder";
this.element = document.createElement("li"); // element that will show up in the Folder menu bar
this.dropdownElement = document.createElement("li"); // element that will show up in EACH Todo box
}
}
所以,每次我创建一个新的Folder
时,我想在dropdownElement
里面追加当前存在的所有 Todo 元素,这样用户就可以选择 Todo 去哪个文件夹。
class Todo{
constructor(){
this.element = document.createElement("div"); // the todo box
}
static addNewFolderToDropdown(dropdownFolderElement){
for(let todo of Todo.instances){ // loops through all the Todos the user has
this.element.appendChild(dropdownFolderElement);
}
}
}
但是,问题是:dropdownFolderElement
只能有一个父节点,所以它不能在每个 Todo 框中,只有一个。
所以我尝试了这个:
static addNewFolderToDropdown(dropdownFolderElement){
for(let todo of Todo.instances){
const clone = dropdownFolderElement.cloneNode(true);
this.element.appendChild(clone);
}
}
效果很好!但是,如果用户更改标题Folder
怎么办?或者如果用户删除Folder
? 克隆人如何知道这种变化?
我一直在尝试提出一个简单的解决方案,但我就是找不到方法。
解决方案
推荐阅读
- skype - 在本地网络上设置 Skype 业务
- c# - 在 DbSet 内部查询
- reactjs - 即使我没有收到错误,React FilePond(功能组件)插件也不起作用?
- c++ - 浮点运算是否会导致 IEC 559/IEEE 754 浮点类型的无限未定义行为
- javascript - 手风琴内的莫里斯图表显示不正确
- c - get_cpu_var、put_cpu_var 不更新 Per CPU 变量
- android - 如何注销谷歌身份验证?
- spring-boot - org.hamcrest isNotNullValue():当多个依赖共存时导入哪个
- mysql - 将 Twilio 日期时间格式转换为 mysql
- python - 如何编写一个程序,该程序将接受一个数字并通过不将数字除以 5 来检查它是否可被 5 整除(在 python 中)