I am trying to dynamically create a list, by cloning a <li>
item, and then dynamically fill in the values of that list. Strangely, I get only the second item out of my object in that list. I have tried to review the code I wrote, but I cannot seem to find the issue?
<ul>
<li>{name},{price}</li>
</ul>
<script>
function loop(node, value) {
value = [
{name: 'Bananas', price: '4'},
{name: 'Candy', price: '2'},
{name: 'Oranges', price: '2'},
{name: 'Vegetables', price: '5'}]
let obj = Object.entries(value);
let len = Object.entries(value).length;
for(let k=0;k<value.length;k++) {
let object = Object.entries(obj[k][1]);
for (const property in object) {
let search = `${object[property]}`;
let values = Object.entries(search.split(','));
let textName = values[0][1];
console.log(textName + ':' + values[1][1]);
let regex = new RegExp("{\s*" + textName+ "[0-9]*\s*}", "gmi");
if(node.childNodes[k].innerHTML) {
node.appendChild(node.childNodes[k].cloneNode(true));
node.childNodes[k].innerHTML = node.childNodes[k].innerHTML.replace(regex, values[1][1]);
}
}
}
}
function nodeParentList() {
let parentList = [];
var docElements = document.getElementsByTagName("*")
for (var i = 0; i < docElements.length; i++) {
parentList.push(docElements[i]);
}
return parentList;
}
var docElements = nodeParentList();
for (var i = 0; i < docElements.length; i++) {
loop(docElements[i]);
}
</script>
Expected: