通过计数器从函数获取变量

时间:2018-09-13 12:24:52

标签: javascript scope

我用增/减按钮设置了一个简单的结帐功能(函数计算总价格->价格*数量),现在正努力从该函数中获取具有总金额的变量。结果,我需要全局变量合计中的总数(在函数中为total1或total2)。在我的示例中,它不起作用,因为为变量total调用函数incr()或subt()会触发该函数,并再次添加或增加该值的值。这是我到目前为止的内容:

<script>
var quantity = document.getElementById("qty").value;
var counter = document.getElementById("qty").value;

// subtract function triggered by subtract button
function subt(){
var quantity = document.getElementById("qty").value = --counter;
document.getElementById('total').innerHTML = 'Total ' + quantity * 298 + ".-";
var total1 = document.getElementById('current').innerHTML = quantity * 298;
return total1;
}

// increment function triggered by increment button
function incr(){
var quantity = document.getElementById("qty").value = ++counter;
document.getElementById('total').innerHTML = 'Total ' + quantity * 298 + ".-";
var total2 = document.getElementById('total').innerHTML = quantity * 298;
return total2;
}


var total = incr();

</script>

2 个答案:

答案 0 :(得分:0)

我认为@epascarello的意思是创建一个函数,在这种情况下,它是根据是否按下加法或减法按钮将参数传递给它的[-1或1]。

我被告知您应该避免使用无参数函数的解决方案,因为无参数函数会产生冗长的代码。

以下示例:

var total = null;
addFoo.addEventListener("click", function(e) {
  total = calcFunc(1);
});
minusFoo.addEventListener("click", function(e) {
  total = calcFunc(-1);
});
function calcFunc(operation) {
  quantity = operation < 0 ? --counter : ++counter;
  document.getElementById('total').innerHTML = 'Total ' + quantity * 298 + ".-";
 var total = document.getElementById('current').innerHTML = quantity * 298;
 return total;

}

我不太确定这是怎么回事... :(
这就是@epascarello的想法吗?

答案 1 :(得分:0)

这是我的代码现在的样子:

var counter = 1;
var quantity = document.getElementById("qty").value;
var initial = document.getElementById('total').innerHTML = 'Total ' + quantity * 298 + ".-";
var add = document.getElementById("add");
var sub = document.getElementById("sub");
add.addEventListener("click", function(e) {
  calcFunc(1);
});
sub.addEventListener("click", function(e) {
  calcFunc(-1);
});
function calcFunc(operation) {
 quantity = operation < 0 ? --counter : ++counter;
 document.getElementById('total').innerHTML = 'Total ' + quantity * 298 + ".-";
 var total = document.getElementById('current').innerHTML = quantity * 298;
 return total;
}