2

昨日受けたいくつかの助けのおかげで、ユーザー入力と選択メニューからの選択に基づいて、HTMLテーブルで動的な合計が機能するようになりました。それは私を困惑させましたが、私は1つの問題に遭遇しました。私のjsfiddleを見ると:

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

次のようにデータを入力した場合:行1:フルーツ=リンゴの数量= 100 Rwo 2:フルーツ=バナナの数量= 200

合計に対してすべてが期待どおりに機能します。

リンゴの合計100バナナの合計200

Row 1 Fruitの選択をAppleからBananceに変更すると、小計は次のようになります。

リンゴの合計100バナナの合計300

バナナの合計は正しく更新されましたが、リンゴの合計は変更されていません。これで、ゼロ/0になるはずです。

これが起こっていることについて何か考えはありますか?

4

3 に答える 3

1

更新:これは、以前は不明確だったので、私が意味したもののjsFiddleです

calc関数の開始時に、すべてをゼロにリセットする必要があります。問題は、ドロップダウンでフルーツの1つが選択された場合にのみ、ゼロにリセットされることです。あなたの場合、アップルは選択されていなかったので、リセットされることはありませんでした!お役に立てれば。

于 2012-06-20T04:46:26.820 に答える
1

sumコードでは、に一致するを更新するだけです。valつまり、最初に値をリセットする必要があります。span合計を保持するクラスをsに追加します。

<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 に答える
1

これがあなたの間違いです:

for(val in total){

のプロパティのhtmlのみを設定しているため、でのみを変更した後はstotalがないため、設定されていないため、合計は更新されません。bananaselectbananabananatotal['banana']

修正は次のとおりです。

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

これにより、最初からすべてのオプションが取得され、selecttotalに各オプションがプロパティとして含まれているかどうかがチェックされ、不足しているプロパティに値が追加されます0

フィドル

selectすべてのsをチェックする場合は、セレクターからoptionを削除します。:first

于 2012-06-20T05:05:17.483 に答える