I have problem with append Child to whole classes in my document which the name of class is “onbackorder”. Here is my code:
<script> var first = document.createElement("p"); var text = document.createTextNode("On backorder"); first.appendChild(text); var isRequestQuote = document.getElementsByClassName('onbackorder'); if (isRequestQuote.length > 0) { document.querySelector(".onbackorder").appendChild(first); } </script>
For this moment function put selector randomly. How can I get same selector in whole document where class is “onbackorder”.
Thank you
Advertisement
Answer
There are 2 points:
document.querySelector(".onbackorder")
is just return first item. So you need to usedocument.querySelectorAll('.onbackorder')
.
The Document method querySelector() returns the first Element within the document that matches the specified selector, or group of selectors. If no matches are found, null is returned.
https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector
var first = document.createElement("p");
you have to create multiple reference variable to append to eachonbackorder
item. Because you cannot create only one and append to multiple items.
So I modified your code and make it works. You can check it at below:
var first = document.createElement("p"); var text = document.createTextNode("On backorder"); first.appendChild(text); const allBackOrders = document.querySelectorAll('.onbackorder'); allBackOrders.forEach((item) => { var newItem = first.cloneNode(true); item.appendChild(newItem); });
<div class="onbackorder"></div> <div class="onbackorder"></div> <div class="onbackorder"></div>