2

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

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

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

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

苹果总数 100 香蕉总数 200

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

苹果总数 100 香蕉总数 300

Bananas 总数已正确更新,但 Apples 总数未更改 - 现在应该为零/0。

任何想法这是怎么回事?

4

3 回答 3

1

这是你的错误:

for(val in total){

您只是为 的属性设置 html ,因此在您更改 only 后没有 s ,total因此s总数不会更新,因为未设置!bananaselectbananabananatotal['banana']

这是一个修复:

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

这将从第一个开始获取所有选项,select并检查 total 是否将每个选项都作为属性,将缺少的属性添加到 value0中。

小提琴

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

于 2012-06-20T05:05:17.483 回答
1

Update: Here's a jsFiddle of what I meant since it was unclear before

At the beginning of the calc function you should reset everything back to zero. The issue is that you only reset to zero if one of the fruits is selected in a drop down. In your case apple wasn't selected so it was never reset! Hope this helps.

于 2012-06-20T04:46:26.820 回答
1

在您的代码中,您只更新与sum匹配的val,换句话说,您需要先重置这些值。向您的 s 添加一个span包含总数的类。

<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]);
    }                
}
于 2012-06-20T04:47:00.590 回答