Ваши расчеты работают должным образом.
В вашем коде есть одна проблема:
document.getElementById('amount').innerHTML = result.toFixed(2); //Here with innerHTML
входные данные не могут содержать html. Они могут содержать только значение. Свойство innerHTML
не идеально подходит для элементов ввода. То, что вы ищете:
document.getElementById('amount').value = result.toFixed(2);
Вы должны установить value
вашей суммы, а не innerHTML
.
Я только что отредактировал ваш Snipped. Обратите внимание на изменения, которые я внес в ваш код. Многие вещи были ненужными. Как ваши множественные операторы if
, проверяющие на 'S'
, 'M'
... Потому что в конце все они приводят к одному и тому же выражению вычисления.
window.addEventListener("load", () => {
// clear then textboxes on Size change
document.querySelectorAll("input[name=size]").forEach(input=>{
input.addEventListener('change', ()=>{
clearTextBoxes();
});
});
});
var computeTotal = () =>
{
var s = document.querySelector('input[name=size]:checked').value;
var q = document.getElementById('qty').value;
var m = document.querySelector('input[name=member]:checked').value;
var result; //initialize to empty string
if(s && q && m && q >= 1) {
result = s * q;
result -= m === "YES" ? result*5/100 : 0;
}
// Change innerHTML to value
document.getElementById('amount').value = result == undefined ? " " : result.toFixed(2);
}
var clearTextBoxes = () => {
document.getElementById("qty").value = "";
document.getElementById("amount").value = "";
}
const clearForm = () => {
document.getElementById('myForm').reset();
}
<form id="myForm">
<p>Member:
<input type="radio" name="member" value="YES">YES
<input type="radio" name="member" value="NO">NO
</p>
<div>
<p>Size:
<input type="radio" name="size" id="S" value="249">S
<input type="radio" name="size" id="M" value="269">M
<input type="radio" name="size" id="L" value="309">L
<input type="radio" name="size" id="XL" value="319">XL
</p>
</div>
<p>Quantity:
<input type="number" name="qty" id="qty">
</p>
<p>Amount: $
<input type="text" name="amount" id="amount" readonly>
</p>
<button type="button" id="calculate" onclick="computeTotal()">Calculate</button>
<button type="button" id="clear" onclick="clearForm()">Reset</button>
</form>