Javascript 如何传输自定义元素';s态与克隆节点

Javascript 如何传输自定义元素';s态与克隆节点,javascript,html,custom-element,Javascript,Html,Custom Element,我正在尝试克隆包含自定义状态属性的节点。问题在于,克隆元素后,它不会传输相关属性。我找到了一个解决方法,将值存储为属性,看起来它们被正确克隆了。当元素被克隆时,是否存在克隆更复杂属性的变通方法 下面是一个简单的属性克隆示例: 类MyP扩展了HTMLElement{ 构造函数(){ 超级(); var shadow=this.attachShadow({ 模式:“打开” }); this.p=document.createElement('p'); this.p.innerText=this.t

我正在尝试克隆包含自定义状态属性的节点。问题在于,克隆元素后,它不会传输相关属性。我找到了一个解决方法,将值存储为属性,看起来它们被正确克隆了。当元素被克隆时,是否存在克隆更复杂属性的变通方法

下面是一个简单的属性克隆示例:

类MyP扩展了HTMLElement{ 构造函数(){ 超级(); var shadow=this.attachShadow({ 模式:“打开” }); this.p=document.createElement('p'); this.p.innerText=this.text; shadow.appendChild(this.p); } 获取文本(){ 返回此.getAttribute('dataText'); } 设置文本(文本){ this.p.innerText=文本; this.setAttribute('dataText',text); } } 自定义元素。定义('my-p',MyP); document.querySelector('my-p')。text='隐藏在阴影中'; document.body.append(document.querySelector('my-p').cloneNode(true))
似乎
数据集
也被正确克隆,我认为这比使用属性要好。此外,如果数据集中存储了复杂的数据结构,则可以检查构造函数中的值,如果它有值,则可以确保元素已克隆,并且可能需要深度复制该结构

类MyP扩展了HTMLElement{ 构造函数(){ 超级(); var shadow=this.attachShadow({ 模式:“打开” }); this.p=document.createElement('p'); this.p.innerText=this.text; shadow.appendChild(this.p); } 获取文本(){ 返回this.dataset.dataText; } 设置文本(文本){ this.p.innerText=文本; this.dataset.dataText=文本; } } 自定义元素。定义('my-p',MyP); document.querySelector('my-p')。text='隐藏在阴影中'; document.body.append(document.querySelector('my-p').cloneNode(true))
似乎
数据集
也被正确克隆,我认为这比使用属性要好。此外,如果数据集中存储了复杂的数据结构,则可以检查构造函数中的值,如果它有值,则可以确保元素已克隆,并且可能需要深度复制该结构

类MyP扩展了HTMLElement{ 构造函数(){ 超级(); var shadow=this.attachShadow({ 模式:“打开” }); this.p=document.createElement('p'); this.p.innerText=this.text; shadow.appendChild(this.p); } 获取文本(){ 返回this.dataset.dataText; } 设置文本(文本){ this.p.innerText=文本; this.dataset.dataText=文本; } } 自定义元素。定义('my-p',MyP); document.querySelector('my-p')。text='隐藏在阴影中'; document.body.append(document.querySelector('my-p').cloneNode(true))
上面写着:上面写着: