Я хочу иметь возможность добавлять несколько строк в div, а также удалять их. У меня есть кнопка «+» вверху страницы, которая предназначена для добавления контента. Затем справа от каждой строки есть кнопка «-» для удаления этой самой строки. Я просто не могу понять код javascript в этом примере.
Это моя основная структура HTML:
<input type="button" value="+" onclick="addRow()">
<div id="content">
</div>
Вот что я хочу добавить в div содержимого:
<input type="text" name="name" value="" />
<input type="text" name="value" value="" />
<label><input type="checkbox" name="check" value="1" />Checked?</label>
<input type="button" value="-" onclick="removeRow()">
javascript
html
innerhtml
Даниэль Товессон
источник
источник
Ответы:
Вы можете сделать что-то подобное.
function addRow() { const div = document.createElement('div'); div.className = 'row'; div.innerHTML = ` <input type="text" name="name" value="" /> <input type="text" name="value" value="" /> <label> <input type="checkbox" name="check" value="1" /> Checked? </label> <input type="button" value="-" onclick="removeRow(this)" /> `; document.getElementById('content').appendChild(div); } function removeRow(input) { document.getElementById('content').removeChild(input.parentNode); }
источник
<div class="options_part"></div>
input.parentNode
наinput.parentNode.parentNode
inremoveRow()
. Напоминание о том, что если вы добавите еще родителей к кнопкам удаления, вам придется соответственно изменить их,removeRow
как я только что сделал.К моему самому большому удивлению, я представляю вам метод DOM, который я никогда не использовал, прежде чем задавал этот вопрос в Google и не нашел древний
insertAdjacentHTML
на MDN (см. CanIUse? InsertAdjacentHTML для довольно зеленой таблицы совместимости).Итак, используя его, вы должны написать
function addRow () { document.querySelector('#content').insertAdjacentHTML( 'afterbegin', `<div class="row"> <input type="text" name="name" value="" /> <input type="text" name="value" value="" /> <label><input type="checkbox" name="check" value="1" />Checked?</label> <input type="button" value="-" onclick="removeRow(this)"> </div>` ) } function removeRow (input) { input.parentNode.remove() }
<input type="button" value="+" onclick="addRow()"> <div id="content"> </div>
источник
Вы можете использовать эту функцию для добавления дочернего элемента к элементу DOM.
function addElement(parentId, elementTag, elementId, html) { // Adds an element to the document var p = document.getElementById(parentId); var newElement = document.createElement(elementTag); newElement.setAttribute('id', elementId); newElement.innerHTML = html; p.appendChild(newElement); } function removeElement(elementId) { // Removes an element from the document var element = document.getElementById(elementId); element.parentNode.removeChild(element); }
источник
Другое решение - использовать
getDocumentById
иinsertAdjacentHTML
.Код:
function addRow() { const div = document.getElementById('content'); div.insertAdjacentHTML('afterbegin', 'PUT_HTML_HERE'); }
Подробнее см. Здесь: Element.insertAdjacentHTML ()
источник
Чтобы удалить узел, вы можете попробовать это решение, оно мне помогло.
var rslt = (nodee=document.getElementById(id)).parentNode.removeChild(nodee);
источник
создать класс для этой кнопки, скажем:
`<input type="button" value="+" class="b1" onclick="addRow()">`
ваш js должен выглядеть так:
$(document).ready(function(){ $('.b1').click(function(){ $('div').append('<input type="text"..etc '); }); });
источник
пожалуйста, попробуйте следовать, чтобы сгенерировать
function addRow() { var e1 = document.createElement("input"); e1.type = "text"; e1.name = "name1"; var cont = document.getElementById("content") cont.appendChild(e1); }
источник
Добавить HTML внутрь div с помощью JavaScript
Синтаксис:
element.innerHTML += "additional HTML code"
или же
element.innerHTML = element.innerHTML + "additional HTML code"
Удалить HTML внутри div с помощью JavaScript
источник
<!DOCTYPE html> <html> <head> <title>Dynamical Add/Remove Text Box</title> <script language="javascript"> localStorage.i = Number(1); function myevent(action) { var i = Number(localStorage.i); var div = document.createElement('div'); if(action.id == "add") { localStorage.i = Number(localStorage.i) + Number(1); var id = i; div.id = id; div.innerHTML = 'TextBox_'+id+': <input type="text" name="tbox_'+id+'"/>' + ' <input type="button" id='+id+' onclick="myevent(this)" value="Delete" />'; document.getElementById('AddDel').appendChild(div); } else { var element = document.getElementById(action.id); element.parentNode.removeChild(element); } } </script> </head> <body> <fieldset> <legend>Dynamical Add / Remove Text Box</legend> <form> <div id="AddDel"> Default TextBox: <input type="text" name="default_tb"> <input type="button" id="add" onclick="myevent(this)" value="Add" /> </div> <input type="button" type="submit" value="Submit Data" /> </form> </fieldset> </body> </html>
источник