Я новичок в программировании, поэтому мог допустить некоторые, даже очевидные ошибки.
Теперь я работаю над небольшим скриптом, в котором я хотел бы добавить новый контент в абзац после div, который я создал при двух условиях (если, иначе).
если что-то написано, то поместите текст в div и консоль.
иначе создайте элемент <p> и напишите, что текст необходим после элемента div.
Я установил код, но консоль в Chrome говорит, что
DivI.insertAfter(p, Div) is not a function
в свойстве onclick (HTML) внутри кнопки.
Даже DivT.appendChild(text) не работает.
Следуя руководству, данному Brackets, I внутри if, создал новую переменную DivT и добавил текст (createTextNode) внутри DivT.
Внутри else я создал новый элемент <p>, вставил внутрь текст, создал 2 переменные, чтобы использовать метод insertAfter, как это было написано в руководстве.
Один для указания места добавления, а другой - для указания, после какого элемента помещается элемент <p>.
Я не могу заставить это работать.
Вот код.
HTML
<input type = "text" id = "scrivimi">
<button type = "button" onloadend = "Cliccando()"
onclick = "Cliccando()">
Clicca
</button>
<div id = "Div"></div>
Помимо заголовка, это единственные элементы на странице.
Javascript
function Cliccando() {
var testo2 = document.getElementById('scrivimi').value;
if ( testo2 != '')
{
alert('js qualcosa scritto');
console.info(testo2);
var DivT = document.getElementsByTagName('div');
var DelTesto = document.createTextNode(testo2);
DivT.appendChild(DelTesto);
}
else {
alert (' js vuoto');
var p = document.createElement("p");
var Contenuto = document.createTextNode('Scrivi del testo');
p.appendChild(Contenuto);
var DivI= document.getElementById('Div');
var Div = document.getElementById('Div');
DivI.insertAfter(p, Div);
}
}
Я бы создал div в html и предоставил display - block или none для функции JavaScript по мере необходимости.
Кроме того, причина, по которой вы получаете сообщение об ошибке с appendChild, заключается в том, что getElementsByTagName возвращает HTMLCollection - это не просто отдельный узел. Я бы рекомендовал вместо этого использовать getElementById
Проблема решена, спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


JS имеет
insertBefore, но неinsertAfter. См. Обходной путь в этот вопрос