#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»));