Javascript:如何动态更新我的关闭?

时间:2016-02-09 00:36:35

标签: javascript jquery

我是JS的新手,所以如果这是一个愚蠢的问题,请道歉:

目标:每次用户从下拉菜单中选择汽车时,汽车的价格会增加一个运行总计。

我在这里有一个代码的JSFiddle:Update a Closure

  <select id="select">
  <option value="">Select</option>
  <option value="100.00">Volvo</option>
  <option value="200.00">Saab</option>
  <option value="300.00">Mercedes</option>
  <option value="400.00">Audi</option>
</select>

<p>total:</p>
<p id="total"> </p>

Javascript:

var addTo = function(passed) {

  var add = function(inner) {
    return parseInt(passed) + parseInt(inner);
  }

  return add
};

var inner = 0; // Need to Dynamically be able to Update this value so that it increments with each new car selected

var addProd = new addTo(inner);

$("#select").change(function() {
  var car = $("#select").val();

  $("#total").append(addProd(car));
});

所以,我抓住了所选产品。然后关闭将产品价格加到零开始。

我选择了另一辆车。第二个汽车价格必须加到第一个,从而增加总额。它是网页上显示的总数。

听起来应该很容易。小提琴中的代码不起作用。我不知道如何让代码增加闭包的“内部”值。显然,每个选择之间必须存在内在的内在。

3 个答案:

答案 0 :(得分:1)

你需要在闭包内部有一个变量来保持运行总数。

var addTo = function(passed) {
  var total = parseInt(passed);
  var add = function(inner) {
    total += parseInt(inner);
    return total;
  }

  return add;
};

答案 1 :(得分:0)

我认为这种情况最好使用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));
});

答案 2 :(得分:0)

我认为这就是你要找的东西。

var runningTotal = 0;

$("#select").on('change', function() {
  var car = parseInt($(this).val());
  runningTotal += car;

  $("#total").html(runningTotal);
});