Javascript:如何动态更新我的闭包?
我对JS很陌生,所以,如果这是一个愚蠢的问题,我道歉: 目标:每次用户从下拉菜单中选择一辆车时,该车的价格都会增加一个运行总数 我这里有一些代码: 因此,我抓取所选的产品。然后关闭将产品价格添加到零开始 我选择另一辆车。第二辆车的价格必须加在第一辆车的价格上,从而增加总价格。它是显示在网页上的总数Javascript:如何动态更新我的闭包?,javascript,jquery,Javascript,Jquery,我对JS很陌生,所以,如果这是一个愚蠢的问题,我道歉: 目标:每次用户从下拉菜单中选择一辆车时,该车的价格都会增加一个运行总数 我这里有一些代码: 因此,我抓取所选的产品。然后关闭将产品价格添加到零开始 我选择另一辆车。第二辆车的价格必须加在第一辆车的价格上,从而增加总价格。它是显示在网页上的总数 听起来应该很容易。小提琴中的代码不起作用。我不知道如何让代码增加闭包的“内部”值。很明显,在每次选择之间必须坚持的是内在因素。我认为这种情况最好使用IFFE var carTotal = (funct
听起来应该很容易。小提琴中的代码不起作用。我不知道如何让代码增加闭包的“内部”值。很明显,在每次选择之间必须坚持的是内在因素。我认为这种情况最好使用IFFE
var carTotal = (function() {
var total = 0;
return {
addToTotal: function(val) {
total += val;
return total;
}
};
})();
$("#select").change(function() {
var car = $("#select").val();
$("#total").append(carTotal.addToTotal(car));
});
在闭包中需要一个变量来保存运行总数
var addTo = function(passed) {
var total = parseInt(passed);
var add = function(inner) {
total += parseInt(inner);
return total;
}
return add;
};
我想这就是你要找的
var runningTotal = 0;
$("#select").on('change', function() {
var car = parseInt($(this).val());
runningTotal += car;
$("#total").html(runningTotal);
});
你有一个打字错误,是生活*:)对于未来的访客来说,什么是生活?@joaqínO谢谢你-仍在学习:什么是IFFE?哦,答案不是我的。。我只是指出了错误。总之,IIFE(立即调用的函数Expresion)是一个声明并立即调用的函数。生成闭包并避免在全局范围内留下指纹是很有用的,在您的情况下,它为您提供了一个存储总价值的范围。你可以多读一点关于生活的书这里有你想要闭包的理由吗?例如,为什么不在更改事件中增加
内部变量?为什么在add函数中使用parseInt()?内部值已经是一个数字,您下拉列表中的价格有小数位,因此parseFloat()对它们更有意义(尽管在实践中,您显示的值的小数位/美分只是零)。@PatrickEvans-我将尝试一下。我曾经相信,为了保持一个价值,它必须在一个闭包中。还在学习JS。谢谢
var addTo = function(passed) {
var total = parseInt(passed);
var add = function(inner) {
total += parseInt(inner);
return total;
}
return add;
};
var runningTotal = 0;
$("#select").on('change', function() {
var car = parseInt($(this).val());
runningTotal += car;
$("#total").html(runningTotal);
});