Флажок ввода остается установленным?

Я новичок в 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 фунтов стерлингов, даже без проверки, и я понятия не имею.

Также только что заметил, что моя переменная - «инициализатор переменной избыточен»

ты можешь добавить весь свой HTML?

Nick Parsons 13.12.2018 13:30

Как говорит Ник, создайте минимальный воспроизводимый пример. Обновлено: да, просто удалите эту точку с запятой.

Chris G 13.12.2018 13:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
if (document.getElementById('express').checked) ; //always checked 

Эта фраза вас беспокоит. Он содержит ;, который создает область блока со следующим { }, который просто всегда выполняется.

edit: подобных проблем можно избежать с помощью линтера javascript и соответствовать вашему стилю и отступам.

Кажется, это исправило, но я действительно не понимаю, как эта точка с запятой вызвала такую ​​ошибку. Мне не всегда нужно заканчивать каждую строку точкой с запятой, как в java?

Rhys 13.12.2018 13:36

Я написал такой же ответ с некоторыми пояснениями там, это был для языка C, но он делает то же самое на большинстве языков (включая javascript)

Cid 13.12.2018 13:42

Другие вопросы по теме