返回不';不工作javascript

返回不';不工作javascript,javascript,return,innerhtml,Javascript,Return,Innerhtml,我的return var不想返回。我做错了什么?我在控制台中遇到此错误: 未捕获引用错误:未定义totaal1 在这一行: $("totaalprijs").innerHTML = totaal1 + totaal2; …您试图使用一个未在任何地方声明的变量,totaal1。因此出现了ReferenceError,如果试图读取未声明的变量的值,则会导致该错误 要修复它,请声明变量(理想情况下为其指定一个有意义的值),或者在该计算中不使用它。(然后对totaal2执行同样的操作,因为它似乎也没有

我的return var不想返回。我做错了什么?我在控制台中遇到此错误:

未捕获引用错误:未定义totaal1

在这一行:

$("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。在使用它之前定义它。