Я новичок в HTML, и я пытаюсь сделать калькулятор почтовых расходов, используя HTML и Javascript, пользователь вводит вес имени пакета, если он хочет экспресс-доставку. Все варианты влияют на цену, но по какой-то причине моя переменная стоимость экспресс-доставки застряла на уровне 5 фунтов стерлингов.
<!DOCTYPE html>
<html>
<head>
<title>Postage Calculator</title>
<script>
function calCost() {
console.info("Invoked calCost()")
document.getElementById('displayName').innerHTML = document.getElementById("name").value;
var expressCost = 0;
if (document.getElementById('express').checked) ; //always checked
{
console.info("yup"); // this was to test if it was staying checked which it does.
expressCost = 5;
}
if (document.getElementById('r1').checked) {
document.getElementById('displayCost').innerHTML = "\u00A3" + (2 * document.getElementById("weight").value + expressCost);
}
else if (document.getElementById('r2').checked) {
document.getElementById('displayCost').innerHTML = "\u00A3" + (10 * document.getElementById("weight").value + expressCost);
}
else {
document.getElementById('displayCost').innerHTML = "\u00A3" + (5 * document.getElementById("weight").value + expressCost);
}
}
</script>
<label> Enter your name <input type = "text" name = "name" id = "name"></label><br>
<br>
<label> Enter weight <input type = "text" name = "weight" id = "weight"></label> Kilograms<br>
<br>
<label>Do you want express delivery?<input type = "checkbox" name = "express" id = "express"></label> Additional 5 Pounds <br>
<br>
<input type = "radio" id = "r1" name = "rate" value = "United Kingdom" checked = "checked"> United Kingdom - 2 per Kilo<br>
<input type = "radio" id = "r2" name = "rate" value = "United States"> United States - 10 per Kilo<br>
<input type = "radio" id = "r3" name = "rate" value = "Europe"> Europe - 5 per Kilo <br>
Это javascript для расчета общей стоимости, я протестировал запуск программы и отправку, и сразу же к общей сумме добавляется 5 фунтов стерлингов, даже без проверки, и я понятия не имею.
Также только что заметил, что моя переменная - «инициализатор переменной избыточен»
Как говорит Ник, создайте минимальный воспроизводимый пример. Обновлено: да, просто удалите эту точку с запятой.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


if (document.getElementById('express').checked) ; //always checked
Эта фраза вас беспокоит. Он содержит ;, который создает область блока со следующим { }, который просто всегда выполняется.
edit: подобных проблем можно избежать с помощью линтера javascript и соответствовать вашему стилю и отступам.
Кажется, это исправило, но я действительно не понимаю, как эта точка с запятой вызвала такую ошибку. Мне не всегда нужно заканчивать каждую строку точкой с запятой, как в java?
Я написал такой же ответ с некоторыми пояснениями там, это был для языка C, но он делает то же самое на большинстве языков (включая javascript)
ты можешь добавить весь свой HTML?