I am trying to use the same JavaScript code on all of my duplicated HTML elements. I am incrementing the HTML elements with an innerHtml property. My first duplicate works fine so far, but the second one does not at all. I am not sure if it's getting reference to its own parent class="subgrid"
element or not. Any solutions or advice are appreciated.
let grid = document.getElementById("grid")
console.log(grid)
const addCharacter = document.getElementById("add-character")
console.log(addCharacter)
let Hp = 0;
let num = 0;
addCharacter.addEventListener("click", () => {
grid.innerHTML += `
<div class="subgrid">
<br>
<div class="status">Status</div>
<br>
<div class="iniative"></div>
<input class="iniativeel" type="number">
<button class="iniativebtn">Submit</button>
<br>
<div class="character">Character</div>
<br>
<div class="healthpoints"></div>
<br>
<input class="initalhp" type="number">
<br>
<Button class="hpsubbtn">Submit</button>
<br>
<input class="damage" type="number">
<br>
<button class="damagebtn">Submit</button>
<br>
<div class="weapons">Weapons</div>
</div>`
btn()
})
function btn() {
const subGrid = document.querySelector(".subgrid")
console.log(subGrid)
let iniativeBtn = subGrid.querySelector(".iniativebtn")
console.log(iniativeBtn)
// Iniative stuff
let iniative = subGrid.querySelector(".iniative")
console.log(iniative)
let iniativeEl = subGrid.querySelector(".iniativeel")
console.log(iniativeEl)
iniativeBtn.addEventListener("click", () => {
iniative.innerText = parseInt(iniativeEl.value)
})
// Healthpoint stuff
let healthPoints = subGrid.querySelector(".healthpoints")
console.log(healthPoints)
let initalHp = subGrid.querySelector(".initalhp")
console.log(initalHp)
let hpSubBtn = subGrid.querySelector(".hpsubbtn")
console.log(hpSubBtn)
hpSubBtn.addEventListener("click", () => {
healthPoints.innerText = parseInt(initalHp.value)
})
let damage = subGrid.querySelector(".damage")
console.log("damage")
let damageBtn = subGrid.querySelector(".damagebtn")
damageBtn.addEventListener("click", () => {
healthPoints.innerText = parseInt(initalHp.value) - parseInt(damage.value)
console.log(healthPoints.innerText)
})
//Weapons stuff
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Adding and grabbing HTML Elements</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<button id="add-character">Add</button>
<div id="grid"></div>
</body>
<script src="main.js"></script>
</html>