#javascript #function #for-loop
#javascript #функция #for-цикл
Вопрос:
Я пытаюсь создать калькулятор, который принимает число в качестве входных данных, решает, в каком диапазоне находится это число, и добавляет соответствующую цену к базовой цене (в настоящее время установлена в 0). Однако я застрял на довольно простом цикле for, который я вставил для перебора диапазонов (в seizprijs). Без цикла for код, похоже, работает просто отлично. Однако, если я запускаю код, включающий цикл for, функция возвращает «не определено».
Я совершенно новичок в кодировании, поэтому я ожидаю, что это будет простая проблема. Тем не менее, я перепробовал все предложения, которые смог найти в Интернете, и, похоже, ничего не работает.
const seizprijs = [
{tijd : "winter", bdatum : 1, edatum : 5, prijs : 45},
{tijd: "lente", bdatum: 5, edatum: 9, prijs: 50}
];
function myFunction() {
var prijs = 0;
var vdat = document.getElementById("datum");
var vdatum = vdat.value;
for (var x = 0, x < seizprijs.length, x ){
if (vdatum > seizprijs[1].bdatum amp;amp; vdatum < seizprijs[1].edatum)
{
prijs = seizprijs[1].prijs;
}
}
document.getElementById("demo").innerHTML = "Totaalprijs:" prijs;
}
<h1>Boeking</h1>
<p id="demo">Totaalprijs: </p>
<form id="boeking">
<input type="number" name="datum" id="datum">
</form>
<button type="button" onclick="myFunction()">Prijs berekenen</button>
Комментарии:
1. w3schools.com/js/js_loop_for.asp для (var x = 0; x < seizprijs.length; x )
Ответ №1:
вы используете ,
вместо ;
в вашем цикле for
попробуйте вот так
for (var x = 0; x < seizprijs.length; x )
Комментарии:
1. Спасибо, это было все! Я изменил это раньше, но, по-видимому, сначала допустил другую ошибку и не изменил ее обратно. Теперь это работает! 🙂
Ответ №2:
Проблема, похоже, заключается в типе данных значения из входных данных. Используйте
унарный оператор для преобразования строки в число. Также, если вы повторяете цикл, используйте index
, x
в своем коде для доступа к значению из массива object
const seizprijs = [{
tijd: "winter",
bdatum: 1,
edatum: 5,
prijs: 45
},
{
tijd: "lente",
bdatum: 5,
edatum: 9,
prijs: 50
}
];
function myFunction() {
var prijs = 0;
var vdat = document.getElementById("datum");
var vdatum = vdat.value;
for (var x = 0; x < seizprijs.length; x ) {
if (vdatum > seizprijs[x].bdatum amp;amp; vdatum < seizprijs[x].edatum) {
prijs = seizprijs[x].prijs;
}
}
document.getElementById("demo").innerHTML = "Totaalprijs:" prijs;
}
<h1>Boeking</h1>
<p id="demo">Totaalprijs: </p>
<form id="boeking">
<input type="number" name="datum" id="datum">
</form>
<button type="button" onclick="myFunction()">Prijs berekenen</button>