I am trying to iterate through elements to add sequential numbering to them.
Example: I have 6 input elements, I want to count how many inputs there are and then change their name to match their number “name=input1”, “name=input2”, and so on. I’m using a for loop to reset this each time an element is added or removed.
Here is the function I’ve been trying (and failing) to implement:
function count(){ console.log(numChildren) var childCount = document.getElementById("items").childElementCount; console.log(childCount + " = number of children") numChildren = []; for (var i = 0; i < childCount; i++) { numChildren.push(i+1) document.querySelector("input[name*='item_name_']").name = "item_name_" + numChildren[i]; } };
Advertisement
Answer
Something like this would work:
const nodes = document.getElementById("items").children; for (var i = 0; i < nodes.length; i++) { nodes[i].setAttribute('name', 'item_name_'+(i+1)); }
<html> <body> <div id="items"> <input type="text" name="item" /> <input type="text" name="item" /> <input type="text" name="item" /> <input type="text" name="item" /> </div> </body> </html>