appendChild在IE 11中添加空的DOM节点

时间:2018-11-15 20:19:35

标签: javascript internet-explorer-11

我有这个真正简单的打字稿,这给我IE 11中的一些问题。 整个任务是,将元素从列表中取出,过滤并放回去。

所以我通过以下方式查询列表

let items = Array.prototype.slice.call(el.querySelectorAll('.pcfilter__results--tile')) as [HTMLElement];

所以我有很好的数组可以过滤。

我使用lodash进行过滤。

let result = _.filter(items, function(items) {
  return items.dataset.vehicletype.indexOf(selectValue) >= 0
});

让我们想象一下我们的列表看起来像这样:

<ul>
  <li data-vehicletype="foo">
    <p> lorem ipsum</p>
  </li>
  <li data-vehicletype="bar">
    <p> lorem ipsum</p>
  </li>
</ul>

因此,我们进行过滤后,现在该重新填充列表了,我通过

this.list = el.querySelector('.pcfilter__results--list');
this.list.innerHTML = '';
for (let i = 0; i < result.length; i++) {
  this.list.appendChild(result[i]);
}

所以我现在期望的是类似的东西。

<ul>
   <li data-vehicletype="foo">
     <p> lorem ipsum</p>
   </li>
</ul>

但是不幸的是,这不是IE 11给我的回报:

<ul>
   <li data-vehicletype="foo"></li>
</ul>

所以在我看来,appendChild()在IE 11中可以正常工作,但它只是复制第一级而不是整个DOM元素(包括其子元素)。

以前有人看过吗?那将非常有帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

深度克隆要复制的对象。

(取自this SO answer

JSON.parse(JSON.stringify(obj))