Member 12721687 Ответов: 1

Интересно, знает ли кто-нибудь, почему этот калькулятор изменений не работает?


Привет, просто интересно, может ли кто-нибудь помочь мне с моим калькулятором изменений.
Он предназначен для того, чтобы вычислить наименьшее количество монет, которые нужно вернуть, но, похоже, выводится неправильно.
Любая помощь будет очень признательна!
<br />
<html><br />
	<head><br />
		<script><br />
		<br />
			var $ = function(id){<br />
		<br />
				return document.getElementById(id);<br />
			}<br />
			const fiveChange = 5;<br />
			const tenChange = 10;<br />
			const twentyChange = 20;<br />
			const fortyChange = 40;<br />
			const fiftyChange = 50;<br />
			<br />
			<br />
			function calculateMinChange(){<br />
			<br />
			if (amount >= fiftyChange )<br />
			{<br />
				$("fiftyCents").value = 1;<br />
				amount = amount - 50;<br />
				return fiftyCents;<br />
			}<br />
			else if (amount >= fortyChange)<br />
			{<br />
				$("twentyCents").value = 2;<br />
				amount = amount - 40;<br />
				return twentyCents;<br />
			<br />
			}<br />
			else if (amount >= twentyChange)<br />
			{<br />
				$("twentyCents").value = 1;<br />
				amount = amount - 20;<br />
				return twentyCents;<br />
			<br />
			}<br />
			else if (amount >= tenChange)<br />
			{<br />
				$("tenCents").value = 1;<br />
				amount = amount - 10;<br />
				return tenCents;<br />
			<br />
			}<br />
			else (amount < fiveChange)<br />
			{<br />
				$("fiveCents").value = 1;<br />
				amount = amount - 5;<br />
				return fiveCents;<br />
			<br />
			<br />
			}<br />
			}<br />
				<br />
			function processEntries(){<br />
				var amount = parseInt($("amount").value);<br />
			<br />
				if (isNaN(amount) || amount>99){<br />
					alert("Change must be numeric and under 99")<br />
				<br />
				}<br />
					else{<br />
						calculateMinChange();<br />
						$("fiveCents").value= fiveCents;<br />
						$("tenCents").value= tenCents;<br />
						$("twentyCents").value= twentyCents;<br />
						$("fiftyCents").value= fiftyCents;<br />
						<br />
					}<br />
				<br />
				<br />
			}<br />
			<br />
			window.onload = function(){ //process click of calculation related to the button<br />
				$("calculate").onclick = processEntries;<br />
				$("amount").focus(); //blinks cursor<br />
			}<br />
			<br />
			<br />
		</script><br />
	<br />
	</head><br />
	<br />
	<body><br />
		<br />
			 Change Calculator  <br />
			<label for="amount">Enter number of cents (0-99).</label>	<br />
			<input type="text" id="amount"><br />
			<label> </label> <br />
			<input type="button" id="calculate" value="calculate"><br />
			<label for="fiveCents">Five cents:  </label><br />
			<input type="text" id="fiveCents"><br />
			<label for="tenCents">Ten cents:  </label><br />
			<input type="text" id="tenCents"><br />
			<label for="twentyCents">Twenty Cents:   </label><br />
			<input type="text" id="twentyCents"><br />
			<label for="fiftyCents">Fifty Cents:   </label><br />
			<input type="text" id="fiftyCents"><br />
			<br />
			<br />
	</body><br />
	<br />
</html><br />


Что я уже пробовал:

Я пробовал использовать оповещения и отладку, но не был на 100% уверен в том, как выводить результаты или просто делаю это неправильно.

1 Ответов

Рейтинг:
12

Karthik_Mahalingam

$("fiveCents").value = fiveCents;
$("tenCents").value = tenCents;
$("twentyCents").value = twentyCents;
$("fiftyCents").value = fiftyCents;


Эти переменные нигде не объявляются

Каждое условие в function calculateMinChange(amount) { возвращает переменную, как указано выше,которая не объявлена.
а расчет суммы бессмыслен, так как вы ее нигде не используете, поэтому я думаю, что вы пытаетесь вернуть эту сумму. вы только будете знать логику .

Исправьте вышесказанное, это должно сработать.

Обновленное Решение
<html>
<head>
    <script>


        var $ = function (id) {
            return document.getElementById(id);
        }
        const fiveChange = 5;
        const tenChange = 10;
        const twentyChange = 20;
        const fortyChange = 40;
        const fiftyChange = 50;


        function calculateMinChange(amount) {

            if (amount >= fiftyChange) {
                $("fiftyCents").value = 1;
                amount = amount - 50;
                return amount;
            }
            else if (amount >= fortyChange) {
                $("twentyCents").value = 2;
                amount = amount - 40;
                return amount;

            }
            else if (amount >= twentyChange) {
                $("twentyCents").value = 1;
                amount = amount - 20;
                return amount;

            }
            else if (amount >= tenChange) {
                $("tenCents").value = 1;
                amount = amount - 10;
                return amount;

            }
            else (amount >= fiveChange)
            {
                $("fiveCents").value = 1;
                amount = amount - 5;
                return fiveCents;
            }
        }

        function processEntries() {
            $("fiveCents").value = 0;
            $("tenCents").value = 0;
            $("twentyCents").value = 0;
            $("fiftyCents").value = 0;

            var amount = parseInt($("amount").value);
            if (isNaN(amount) || amount > 99) {
                alert("Change must be numeric and under 99")

            }
            else {
                debugger


                while (amount >= 5)
                    amount = calculateMinChange(amount); 
                 
            }}


        window.onload = function () { //process click of calculation related to the button
            $("calculate").onclick = processEntries;
            $("amount").focus(); //blinks cursor
        }



    </script>

</head>

<body>

    Change Calculator
    <label for="amount">Enter number of cents (0-99).</label>
    <input type="text" id="amount">
    <label> </label>
    <input type="button" id="calculate" value="calculate">
    <label for="fiveCents">Five cents: </label>
    <input type="text" id="fiveCents">
    <label for="tenCents">Ten cents: </label>
    <input type="text" id="tenCents">
    <label for="twentyCents">Twenty Cents: </label>
    <input type="text" id="twentyCents">
    <label for="fiftyCents">Fifty Cents: </label>
    <input type="text" id="fiftyCents">


</body>

</html>


Member 12721687

Большое вам спасибо за помощь, Картик!
Просто интересно, почему я не объявил об этом там?
если нет, то как и где я их объявлю?
Спасибо за всю помощь :)

Karthik_Mahalingam

скажите мне, чего вы пытаетесь достичь в приведенном выше коде..
даст вам простое и чистое решение.

Member 12721687

Спасибо!
Я пытаюсь создать веб-страницу, которая отображает минимальное количество 5 центов, десять центов, 20 центов и 50 центов, представляющих монеты, составляющие указанное количество центов.
Только в диапазоне от 0 до 99 монет.
Я очень ценю вашу поддержку!

Karthik_Mahalingam

есть ли какие-нибудь 40 центов?

Member 12721687

Нет никаких 40 центов( просто подумали об обмане вокруг этого.)
Просто 50 - 20 - 10 - 5 (австралийские доллары)
редактирования : орфографическая ошибка не

Karthik_Mahalingam

проверьте обновленное решение

Member 12721687

Большое вам спасибо!
Я обязательно пройду через него и задам вам любые вопросы, если мне будет неясно.
Серьезно, я очень ценю это.

Karthik_Mahalingam

добро пожаловать :)

Member 12721687

В "если", в "еще".
Что делает отладчик делать?

Karthik_Mahalingam

ха-ха! удалите отладчик, он просто используется для проверки изменяемых значений во время выполнения...
я промахнулся, чтобы снять его.
если вы включите инструменты разработчика F12, отладчик будет работать....

Karthik_Mahalingam

относиться Отладка JavaScript[^]