appendChild добавляет пустой DOM-узел в IE 11 - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть этот действительно простой фрагмент 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-элемент, включая его потомки.

Кто-нибудь видел это раньше? Это было бы очень полезно, спасибо!

1 Ответ

0 голосов
/ 15 ноября 2018

Глубокое клонирование копируемых объектов.

(взято из этого SO ответа )

JSON.parse(JSON.stringify(obj))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...