返回不';不工作javascript
我的return var不想返回。我做错了什么?我在控制台中遇到此错误: 未捕获引用错误:未定义totaal1 在这一行:返回不';不工作javascript,javascript,return,innerhtml,Javascript,Return,Innerhtml,我的return var不想返回。我做错了什么?我在控制台中遇到此错误: 未捕获引用错误:未定义totaal1 在这一行: $("totaalprijs").innerHTML = totaal1 + totaal2; …您试图使用一个未在任何地方声明的变量,totaal1。因此出现了ReferenceError,如果试图读取未声明的变量的值,则会导致该错误 要修复它,请声明变量(理想情况下为其指定一个有意义的值),或者在该计算中不使用它。(然后对totaal2执行同样的操作,因为它似乎也没有
$("totaalprijs").innerHTML = totaal1 + totaal2;
…您试图使用一个未在任何地方声明的变量,totaal1
。因此出现了ReferenceError
,如果试图读取未声明的变量的值,则会导致该错误
要修复它,请声明变量(理想情况下为其指定一个有意义的值),或者在该计算中不使用它。(然后对totaal2执行同样的操作,因为它似乎也没有在任何地方声明。)
现在,有趣的是,如果change
事件在gerecht1
和gerecht2
上触发,totaal1
和totaal2
将通过隐式创建为全局变量。但是,由于这些更改处理程序在导致问题的代码出现之后才被附加,因此由于错误,它们永远不会被附加
FWIW,我想你可能想要这样的东西:
var totaal1 = 0, totaal2 = 0;
var $ = function (id) {
return document.getElementById(id);
};
var updateTotaalPrijs = function() {
$("totaalprijs").innerHTML = totaal1 + totaal2;
};
updateTotaalPrijs();
$("gerecht1").onchange = function () {
var aantal = parseFloat($("gerecht1").value); // Or possibly `parseInt(..., 10)`
var prijs = 7.9;
console.log(aantal);
totaal1 = aantal * prijs;
updateTotaalPrijs();
};
$("gerecht2").onchange = function () {
var aantal = parseFloat($("gerecht2").value); // Or possibly `parseInt(..., 10)`
var prijs = 9.9;
console.log(aantal);
totaal2 = aantal * prijs;
updateTotaalPrijs();
};
还有FWIW,我建议大部分时间使用函数声明,并包装所有内容以避免创建全局函数:
(function() {
var totaal1 = 0, totaal2 = 0;
function $(id) {
return document.getElementById(id);
}
function updateTotaalPrijs() {
$("totaalprijs").innerHTML = totaal1 + totaal2;
}
updateTotaalPrijs();
$("gerecht1").onchange = function () {
var aantal = parseFloat($("gerecht1").value); // Or possibly `parseInt(..., 10)`
var prijs = 7.9;
console.log(aantal);
totaal1 = aantal * prijs;
updateTotaalPrijs();
};
$("gerecht2").onchange = function () {
var aantal = parseFloat($("gerecht2").value); // Or possibly `parseInt(..., 10)`
var prijs = 9.9;
console.log(aantal);
totaal2 = aantal * prijs;
updateTotaalPrijs();
};
})();
在这一行:
$("totaalprijs").innerHTML = totaal1 + totaal2;
…您试图使用一个未在任何地方声明的变量,totaal1
。因此出现了ReferenceError
,如果试图读取未声明的变量的值,则会导致该错误
要修复它,请声明变量(理想情况下为其指定一个有意义的值),或者在该计算中不使用它。(然后对totaal2执行同样的操作,因为它似乎也没有在任何地方声明。)
现在,有趣的是,如果change
事件在gerecht1
和gerecht2
上触发,totaal1
和totaal2
将通过隐式创建为全局变量。但是,由于这些更改处理程序在导致问题的代码出现之后才被附加,因此由于错误,它们永远不会被附加
FWIW,我想你可能想要这样的东西:
var totaal1 = 0, totaal2 = 0;
var $ = function (id) {
return document.getElementById(id);
};
var updateTotaalPrijs = function() {
$("totaalprijs").innerHTML = totaal1 + totaal2;
};
updateTotaalPrijs();
$("gerecht1").onchange = function () {
var aantal = parseFloat($("gerecht1").value); // Or possibly `parseInt(..., 10)`
var prijs = 7.9;
console.log(aantal);
totaal1 = aantal * prijs;
updateTotaalPrijs();
};
$("gerecht2").onchange = function () {
var aantal = parseFloat($("gerecht2").value); // Or possibly `parseInt(..., 10)`
var prijs = 9.9;
console.log(aantal);
totaal2 = aantal * prijs;
updateTotaalPrijs();
};
还有FWIW,我建议大部分时间使用函数声明,并包装所有内容以避免创建全局函数:
(function() {
var totaal1 = 0, totaal2 = 0;
function $(id) {
return document.getElementById(id);
}
function updateTotaalPrijs() {
$("totaalprijs").innerHTML = totaal1 + totaal2;
}
updateTotaalPrijs();
$("gerecht1").onchange = function () {
var aantal = parseFloat($("gerecht1").value); // Or possibly `parseInt(..., 10)`
var prijs = 7.9;
console.log(aantal);
totaal1 = aantal * prijs;
updateTotaalPrijs();
};
$("gerecht2").onchange = function () {
var aantal = parseFloat($("gerecht2").value); // Or possibly `parseInt(..., 10)`
var prijs = 9.9;
console.log(aantal);
totaal2 = aantal * prijs;
updateTotaalPrijs();
};
})();
您必须声明totaal1和totaal2变量,因此请尝试以下代码:
var totaal1=0,totaal2=0;
var $ = function (id)
{
return document.getElementById(id);
}
$("totaalprijs").innerHTML = totaal1 + totaal2;
$("gerecht1").onchange = function ()
{
var aantal = $("gerecht1").value;
var prijs = 7.9;
console.log(aantal);
totaal1 = aantal * prijs;
return totaal1;
}
$("gerecht2").onchange = function ()
{
var aantal = $("gerecht2").value;
var prijs = 9.9;
console.log(aantal);
totaal2 = aantal * prijs;
return totaal2;
}
您必须声明totaal1和totaal2变量,因此请尝试以下代码:
var totaal1=0,totaal2=0;
var $ = function (id)
{
return document.getElementById(id);
}
$("totaalprijs").innerHTML = totaal1 + totaal2;
$("gerecht1").onchange = function ()
{
var aantal = $("gerecht1").value;
var prijs = 7.9;
console.log(aantal);
totaal1 = aantal * prijs;
return totaal1;
}
$("gerecht2").onchange = function ()
{
var aantal = $("gerecht2").value;
var prijs = 9.9;
console.log(aantal);
totaal2 = aantal * prijs;
return totaal2;
}
一致
$("totaalprijs").innerHTML = totaal1 + totaal2;
您正在尝试访问全局变量totaal1
和totaal2
,它们是事件处理函数的本地变量。处理程序返回值用于内部DOM事件处理,而不是以这种方式工作
当更新了gerecht1
和gerecht2
时,您需要更新#totaalprijs
,因此您最好创建通用的onchange
处理程序,它将执行所有计算
var $ = function(id) {
return document.getElementById(id);
}
// Common change handler
function calc(e) {
var aantal1 = $("gerecht1").value,
aantal2 = $("gerecht2").value,
prijs1 = 7.9,
prijs2 = 9.9,
total = aantal1 * prijs1 + aantal2 * prijs2;
$("totaalprijs").innerHTML = total;
}
$("gerecht1").onchange = calc;
$("gerecht2").onchange = calc;
calc(); // Call on load, to calculate on initial values
一致
$("totaalprijs").innerHTML = totaal1 + totaal2;
您正在尝试访问全局变量totaal1
和totaal2
,它们是事件处理函数的本地变量。处理程序返回值用于内部DOM事件处理,而不是以这种方式工作
当更新了gerecht1
和gerecht2
时,您需要更新#totaalprijs
,因此您最好创建通用的onchange
处理程序,它将执行所有计算
var $ = function(id) {
return document.getElementById(id);
}
// Common change handler
function calc(e) {
var aantal1 = $("gerecht1").value,
aantal2 = $("gerecht2").value,
prijs1 = 7.9,
prijs2 = 9.9,
total = aantal1 * prijs1 + aantal2 * prijs2;
$("totaalprijs").innerHTML = total;
}
$("gerecht1").onchange = calc;
$("gerecht2").onchange = calc;
calc(); // Call on load, to calculate on initial values
使用变量声明,比如:“var totaal1”,而不仅仅是“totaal1”,您在哪里定义了
totaal1
?这里解释的类似问题错误说明了一切。未捕获引用错误:未定义totaal1。在使用之前先定义它。使用变量声明,例如:“var totaall1”而不是“totaall1”,您在哪里定义了totaall1
?这里解释的类似问题错误说明了一切。未捕获引用错误:未定义totaal1。在使用它之前定义它。