我正在尝试创建一个将数字作为输入的计算器,确定该数字在哪个范围内,并将相应的价格添加到基本价格(当前设置为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>
答案 0 :(得分:1)
您在for循环中使用,
而不是;
尝试这样
for (var x = 0; x < seizprijs.length; x++)
答案 1 :(得分:0)
问题似乎出在输入值的数据类型上。使用+
一元运算符将字符串转换为数字。另外,如果要迭代循环,请在代码中使用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>