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



我有一段非常简单的Typescript,它在IE 11中给了我一些问题。整个任务是,从列表中取出元素,过滤它们并将它们放回

所以我通过查询列表

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

所以我有很好的阵列可以过滤。

我用炉灰过滤。

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元素,包括它的子元素。

有人见过这个吗?那将非常有帮助,谢谢!

深度克隆要复制的对象。

(取自SO的回答(

JSON.parse(JSON.stringify(obj))

最新更新