У меня есть этот действительно простой фрагмент Typescript, который дает мне несколько вопросов в 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-элемент, включая его потомки.
Кто-нибудь видел это раньше? Это было бы очень полезно, спасибо!