I have created a code with 4 range slider that displays only its total in "$" symbol. This total must not exceed 5 symbols in all 4 sliders. The objective is that the customer will be able to have a visual appercus without knowing the amount how much his project will cost him.
Here is the code I have done so far.
<div id="container">
<label for="slider1">Titre 1</label>
<input type="range" id="slider1" min="0" max="5" value="0">
<br>
<label for="slider2">Titre 2</label>
<input type="range" id="slider2" min="0" max="5" value="0">
<br>
<label for="slider3">Titre 3</label>
<input type="range" id="slider3" min="0" max="5" value="0">
<br>
<label for="slider4">Titre 4</label>
<input type="range" id="slider4" min="0" max="5" value="0">
<br>
<div id="total">Total: <span id="dollar-signs"></span></div>
</div>
<style>
#container {
display: flex;
flex-direction: column;
}
label {
font-weight: bold;
}
#total {
font-weight: bold;
}
#total.exceeded {
color: red;
}
</style>
<script>
const sliders = document.querySelectorAll("#container input[type=range]");
function updateTotal() {
let total = 0;
sliders.forEach(slider => {
total += Number(slider.value);
});
const totalElement = document.getElementById("total");
const dollarSigns = document.getElementById("dollar-signs");
dollarSigns.innerHTML = "";
for (let i = 0; i < total; i++) {
if (i < 5) {
dollarSigns.innerHTML += "$";
}
}
if (total > 5) {
totalElement.classList.add("exceeded");
} else {
totalElement.classList.remove("exceeded");
}
}
sliders.forEach(slider => {
slider.addEventListener("input", updateTotal);
});
updateTotal();
</script>
I would like someone to help me debug my script to allow the 4 slider to display a maximum of 5 $ sybols.
Currently it does it but not correctly if my 4 sliders are at their maximum it must be 5 symbols.