Замените id
на класс
id должен быть уникальным для каждого элемента.
Когда вы сделаете document.getElementById
, он вернет только первый совпавший элемент.
Таким образом, вы должны использовать class
вместо id
.
Поскольку document.getElementsByClassName
возвращает все совпадающие элементы с className.
Также вы должны привязать прослушиватель событий к document
, а затем проверьте элемент.
Поскольку ваши элементы создаются динамически, а addEventListener
связывает событие только с элементами, которые присутствуют в DOM.
Как
const progressBar = window.document.getElementById("progress-bar");
const progressContainer = window.document.getElementById("progress-container");
const threshold = window.document.getElementsByClassName("threshold");
let thresholdValue, value;
const live = document.getElementsByClassName("live");
document.addEventListener("change", e => {
if (e.target.className.indexOf('threshold') > -1) {
thresholdValue = e.target.value;
} else if (e.target.className.indexOf('live') > -1) {
value = e.target.value;
let percentValue = Math.floor((value / (2 * thresholdValue)) * 100);
let percentMargin = Math.floor((25 * value) / 100);
console.log(percentValue, percentMargin);
if (value < 100) {
progressBar.style.height = `calc(${value}% - ${percentMargin}px)`;
} else if (value => 100) {
progressBar.style.height = `calc(100% - 25px)`;
} else {
progressBar.style.height = `0px`;
}
if (percentValue < 50) {
progressBar.style.backgroundColor = "red";
progressContainer.style.borderColor = "red";
} else {
progressBar.style.backgroundColor = "green";
progressContainer.style.borderColor = "green";
}
}
});
for (var i = 0; i < 4; i++) {
var headdiv = document.getElementById('headdiv');
var elem = document.querySelector('#mycontainer');
var clone = elem.cloneNode(true);
clone.id = 'mycontainer' + i;
headdiv.appendChild(clone);
}
<div id="headdiv">
<div id="mycontainer" style="width: auto;float: left;margin-left: 2%;">
<input class="threshold" placeholder="threshold value" type="text" name="thresholdd" style="width: 120px; margin-top: 30px;margin-left: 0%; padding: 10px;" />
<input class="live" placeholder="live value" type="text" name="livee" style="width: 120px; margin-bottom: 20px;padding: 10px;" />
<div id="progress-container" class="progress-container">
<div id="progress-bar" class="progress-bar"></div>
</div>
</div>
</div>