JavaScript вставить div

#javascript

#javascript

Вопрос:

Я пытаюсь вставить div перед кнопкой «добавить div». Я получаю сообщение об ошибке node not found с этим кодом:

 document.getElementById("reg").insertBefore(newField, document.getElementById("op"));
  

Но этот код работает, даже если это не тот результат, который я хочу:

 document.getElementById("reg").insertBefore(newField, document.getElementById("op").parentNode);
  

Вот источник:

 <form id="reg">
  <div class="section">
    <div class="sectionHeader">Welcome</div>
    <div id="op1">
      <div class="split25">
        <select></select>
      </div>
      <div class="split25">
        <select></select>
      </div>
      <div class="split50">
        <input>
      </div>
    </div>
    <div class="additional" id="op"><button></div>
  </div>
<form>
  

Почему он может получить доступ к своему родительскому узлу, но не к самому себе?

Комментарии:

1. Если вы хотите вставить его внутрь div.section , почему бы не вызвать insertBefore этот элемент?

2. Я не уверен, что понимаю. То, что я хочу сделать, это щелкнуть, добавить новый div с именем op2 перед <div class=»дополнительный идентификатор =»op»>

3. Это дочерний div class="section" элемент, поэтому вы должны вызвать insertBefore этот раздел div, но у вас уже есть ответ 🙂

Ответ №1:

Когда вы insertBefore, второй аргумент должен быть дочерним по отношению к базовому объекту

 parentNode.insertBefore(newNode, existingNode);
  

Если existingNode не является дочерним элементом parentNode, это приведет к сбою. Это то, что происходит в вашем коде.

Комментарии:

1. Спасибо. Я получил это, работая с этим кодом: document.getElementById(«op1»).insertBefore(новое поле, document.getElementById(«op»));