nie mam odstępów między liczbami jest 1,2,3 zamiast 1, 2, 3.
użyj array.join()
result.textContent = `${gradeArr.join(', ')}`;
zostało mi maxlenght na input type number
użyj atrybutów min i max i zdarzenia np. oninput na <input type="number"> np:
input.addEventListener('input', (e) => {
const maxlength = 3;
if (e.target.value.length > maxlength) {
e.target.value = e.target.value.slice(0, maxlength);
}
});
gdy próbuję zrobić averge value zbiera mi dane nwm skąd
taki zapis i po sprawie
gradeArr.push(parseInt(input.value));
console.log(typeof input.value);
console.log(typeof parseInt(input.value));
clear po każdym kliknięciu.
const input = document.querySelector("#grade")
...
btn.addEventListener('click', (e) => {
...
input.value = '';
});
dodałbym takie zabezpieczenie, gdy input jest "... clear po każdym kliknięciu"
btn.addEventListener('click', (e) => {
e.preventDefault();
if (input.value.length == 0) return false;
...
});
Wszystko razem (zmiany), propozycja
<form>
<label for="grade">Enter your grade</label>
<input type="number" name="grade" id="grade" autocomplete="off" min="1" max="999" />
<button class="count">Click</button>
</form>
<p class="result"></p>
<p class="avg"></p>
const input = document.querySelector("#grade"),
btn = document.querySelector(".count"),
result = document.querySelector(".result"),
avg = document.querySelector(".avg");
const gradeArr = [];
input.addEventListener('input', (e) => {
const maxlength = 3;
if (e.target.value.length > maxlength)
e.target.value = e.target.value.slice(0, maxlength);
});
btn.addEventListener('click', (e) => {
e.preventDefault();
if (input.value.length == 0) return false;
gradeArr.push(parseInt(input.value));
result.textContent = `${gradeArr.join(', ')}`;
const reducer = gradeArr.reduce((preValue, currValue) => preValue + currValue);
const avgValue = reducer / gradeArr.length;
avg.textContent = avgValue.toFixed(2);
console.log(`Average value: ${avgValue.toFixed(2)}`);
const minValue = Math.min(...gradeArr);
const maxValue = Math.max(...gradeArr);
console.log(`Lowest value: ${minValue}`);
console.log(`Highest value: ${maxValue}`);
input.value = '';
});