Функция JS «не определена» после добавления цикла - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать калькулятор, который принимает число в качестве входных данных, решает, в каком диапазоне это число, и добавляет соответствующую цену к базовой цене (в настоящее время установлен на 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 && 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>

Ответы [ 2 ]

1 голос
/ 14 марта 2019

вы используете , вместо ; в цикле for

попробуй вот так

for (var x = 0; x < seizprijs.length; x++)
0 голосов
/ 14 марта 2019

Кажется, проблема в типе данных значения из ввода. Используйте + унарный оператор для преобразования строки в число. Также, если вы выполняете итерацию цикла, используйте index, x в вашем коде для доступа к значению из массива объекта

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 && 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...