Javascript在选择菜单上不触发更改100%的时间

Javascript not firing on select menu change 100% of the time

本文关键字:100% 时间 选择 菜单 Javascript      更新时间:2023-09-26

感谢我昨天得到的一些帮助,我根据用户输入和从选择菜单中选择的选择对 HTML 表进行了一些动态求和。我遇到了一个问题,尽管这让我感到困惑。如果你看看我的jsfiddle:

http://jsfiddle.net/fmdataweb/T5xtL/13/

如果按如下方式输入数据:第 1 行:水果 = 苹果数量 = 100Rwo 2:水果=香蕉数量=200

对于总数,一切都按预期工作:

苹果总数 100香蕉总数 200

如果您现在将第 1 行水果选择从苹果更改为班安,则小计现在为:

苹果总数 100香蕉总数 300

香蕉总数已正确更新,但苹果总数没有变化 - 现在应为零/0。

知道这是怎么回事吗?

更新:这是我的意思的jsFiddle,因为之前不清楚

在 calc 函数开始时,您应该将所有内容重置回零。问题是,只有在下拉列表中选择了其中一个水果时,您才会重置为零。 在您的情况下,苹果未被选中,因此永远不会重置!希望这有帮助。

在您的代码中,您只更新与span匹配的val,换句话说,您需要先重置值。将一个类添加到您的total中,其中包含总计。

<span id="sumApples" class="sum"></span>
<span id="sumBanana" class="sum"></span>
...

然后重置:

for(val in total){
    if(total.hasOwnProperty(val)){
        $('.sum').html(''); // Reset
        $('#sum' + val).html(total[val]);
    }                
}

这是你的错误:

for(val in total){

您只是为 banana 的属性设置 html,因此在更改唯一具有banana banana后没有select,因此total['banana']的总数不会更新,因为没有设置sum0!

这是一个修复:

$('.fruit select:first option').each(function() {
    val = $(this).text();
    if(!total.hasOwnProperty(val))
        total[val] = 0;
});

这将从第一个0中获取所有选项,并检查 total 是否将其每个选项作为属性,添加具有值的缺失属性 select .

小提琴

如果要检查所有option:first,请从选择器中删除CC_15。