【问题标题】:Checkbox value double output on if else if复选框值双输出 on if else if
【发布时间】:2018-02-15 02:32:50
【问题描述】:

这段代码有什么问题:

function calculateAddOnPrice() {
        if (totalPrice <= 47) {
            var polybags= $('#polybags').is(':checked') ? "0.5" : "0";            
            console.log(polybags);
        }
        else if (totalPrice >= 48 && totalPrice < 71) {
            var polybags = $('#polybags').is(':checked') ? "0.35" : "0";            
            console.log(polybags);
        }

所以我将输出记录到控制台。

当 totalPrice 小于 47 并且我单击 ON 复选框时,控制台看起来像这样:

0.5

当我取消勾选它时,我得到了这个:

0

totalPrice > 48 并且我勾选该框,我得到输出:

0.5
0.35

如果我取消勾选,我会得到:

0
0

我不知道为什么它给了我双重价值,有人可以帮助我吗? :)

更新-----

完整的 jQuery:https://pastebin.com/DYV92cj3

此部分的 HTML:

<div class="checkbox">
    <label><input type="checkbox" id="polybags">I WOULD LIKE POLY BAGGING</label>
</div>

【问题讨论】:

  • 可以贴出你完整的JS和HTML代码吗?
  • 是的。看起来代码没有给出答案。需要更多上下文。听起来 if 和 else if 是一起执行的。可能意味着函数被调用了两次,而 totalPrice 值在某处被更改
  • 该代码无法产生您所谓的响应
  • 您可以尝试登录到CalculateAddOnPrice 根级别的控制台,看看当您勾选/取消勾选时它被调用了多少次?
  • @Merigold 我不知道该怎么做……对不起!

标签: javascript jquery checkbox input


【解决方案1】:

当您开始在 .size_control 上输入内容时,您正在执行整个代码块。这意味着每次您在尺寸控制元素上输入时,这些功能都会附加到复选框的更改事件。三个输入意味着更改事件被堆叠了三次,因此您获得了三个函数调用。

我们将不必要的代码放在输入事件之外,也许将它们放在函数中以获得更简洁的方法

$(document).ready(function () {
    $(document).on('input', '.size_control', function(event) { sizeControlFunc(); });
    setChkBxEvents();
});

https://pastebin.com/3bS96AhA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    相关资源
    最近更新 更多