0

私のスクリプトは NAN を返しますが、代わりに 0 を表示したいです。

|| の使用 0 はこれを達成しましたが、現在は var percentQ に対して 0 ではなく 100 を返します。100を返す原因は何ですか?

$('#observationTotalRefresh').on('click', function () {

    var 
    sumP = 0,
    sumQ = 0,
    countP = 0,
    countQ = 0;

    $('.observationPositive:not(:disabled)').each(function(){
        countP++;
        sumP += Number($(this).val());
    });
    $('.observationQuestionable:not(:disabled)').each(function(){
        countQ++;
        sumQ += Number($(this).val());
    });

    var percentP = 100/(1 + (sumQ/sumP)) || 0;
    var percentQ = (100 - percentP) || 0;

    $("#observationPositivePercentage").text(percentP.toFixed(0));
    $("#observationQuestionablePercentage").text(percentQ.toFixed(0));
    $("#observationTotal").text(sumP + sumQ);
});
4

2 に答える 2

0

|| 0forを実行すると、それが常に数値percentPになることが保証されます。percentPだから、percentQ常になり100 - percentPます。percentPが 0 の場合、 percentQ100 になります。

ただし、パーセンテージの計算は奇妙に怪しいようです。欲しかったのかもしれません

var percentP = 100 * sumP / (sumP + sumQ);

代わりは?次に、それは単に

var percentP, percentQ;
if(sumP == 0 && sumQ == 0) {
    percentP = percentQ = 0;
} else {
    percentP = 100 * sumP / (sumP + sumQ);
    percentQ = 100 * sumQ / (sumP + sumQ);
}
于 2013-01-28T22:00:08.073 に答える
0

この行で

var percentP = 100/(1 + (sumQ/sumP)) || 0;

sumQ/sumPとなり、が0/0返さNaNれ、式の残りが に評価され、 がNaN返され0ます。

次に、この行で

var percentQ = (100 - percentP) || 0;

100 - 0となり、これは100

于 2013-01-28T22:02:22.893 に答える