我有一段非常简单的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))