我用增/减按钮设置了一个简单的结帐功能(函数计算总价格->价格*数量),现在正努力从该函数中获取具有总金额的变量。结果,我需要全局变量合计中的总数(在函数中为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>
答案 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;
}