Альтернатива JavaScript для JQuery append () в IE11 - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь найти альтернативу vanilla js для jQuery append (), так как она мне нужна для работы в Internet Explorer.

Мне нужно заменить $ ('# id2) .append (ссылка);

Я попытался добавить innerHTML и вставить в parentNode, однако я получаю сообщение об ошибке «Не удается прочитать свойство« insertBefore »из неопределенного» * ​​1005 *

  let condition = false;
  let link = '';

  if (condition === true) {

    link = `<li class="list>List</li>`;

    $('#id1').prepend(link);
  }
  else {

    link = `<a id="button">Button</a>`;
    $('#id2').append(link);
  }

Разметка:

<div id="id1">

    <input type="submit" id="id2">

</div>

Приведенный выше код прекрасно работает во всех браузерах, кроме IE11, что является обязательным требованием. Я попытался заменить $ ('# id2) .append (ссылка); с кодом ниже, но получите ошибку «insertBefore» из undefined:

    const div = document.querySelectorAll('#id2');
    const newText = document.createElement('div');
    const newText2 = newText.innerHTML = link;
    div.parentNode.insertBefore(newText2, div.nextSibling); 

Спасибо.

1 Ответ

0 голосов
/ 17 января 2019

Вы должны работать с элементами DOM, а не со строками. Затем вы можете добавить или добавить, как показано здесь:

// Create and configure DOM elements that will be used:
let a = document.createElement("a");
a.id = "button";
a.textContent = "Button";

let li = document.createElement("li");
li.classList.add("list");
li.textContent = "List";

// Get reference to the node to prepend/append to:
let target = document.getElementById("id1");

let answer = +prompt("1 = prepend, 2 = append");

if (answer === 1) {
   target.parentNode.insertBefore(a, target);
} else {
   target.appendChild(li);
}
<body>

  <div id="id1">
    <input type="submit" id="id2">
  </div>
  
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...