I have the following function and I am trying to figure out a better way to append multiple items using appendChild()
.
When the user clicks on Add, each item should look like this:
<li> <input type="checkbox"> <label>Content typed by the user</label> <input type="text"> <button class="edit">Edit</button> <button class="delete">Delete</button> </li>
and I have this function to add these elements:
function addNewItem(listElement, itemInput) { var listItem = document.createElement("li"); var listItemCheckbox = document.createElement("input"); var listItemLabel = document.createElement("label"); var editableInput = document.createElement("input"); var editButton = document.createElement("button"); var deleteButton = document.createElement("button"); // define types listItemCheckbox.type = "checkbox"; editableInput.type = "text"; // define content and class for buttons editButton.innerText = "Edit"; editButton.className = "edit"; deleteButton.innerText = "Delete"; deleteButton.className = "delete"; listItemLabel.innerText = itemText.value; // appendChild() - append these items to the li listElement.appendChild(listItem); listItem.appendChild(listItemCheckbox); listItem.appendChild(listItemLabel); listItem.appendChild(editButton); listItem.appendChild(deleteButton); if (itemText.value.length > 0) { itemText.value = ""; inputFocus(itemText); } }
But you can notice that I am repeating three times the appendChild()
for listItem
. Is it possible to add multiple items to the appendChild()
?
append() The append method allows you to append multiple elements or text nodes to a parent node. As you can see, you can supply an unlimited amount of arguments to the append() method and it will append everything to the parent.
Difference between appendChild() and append() append() also allows you to append DOMString objects, and it has no return value. Further, parentNode. appendchild() allows you to append only one node, while parentNode. append() supports multiple arguments - so you can append several nodes and strings.
You can do it with DocumentFragment.
var documentFragment = document.createDocumentFragment(); documentFragment.appendChild(listItem); listItem.appendChild(listItemCheckbox); listItem.appendChild(listItemLabel); listItem.appendChild(editButton); listItem.appendChild(deleteButton); listElement.appendChild(documentFragment);
DocumentFragments allow developers to place child elements onto an arbitrary node-like parent, allowing for node-like interactions without a true root node. Doing so allows developers to produce structure without doing so within the visible DOM
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With