0

我的脚本正在返回 NAN,我希望它改为显示 0。

使用 || 0 已经实现了这一点,但是它现在返回 100 而不是 var percentQ 的 0。是什么导致它返回 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

如果你这样做|| 0percentP你确保它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/sumPwill be0/0并且 will return NaN,导致等式的其余部分计算为NaN然后返回0

然后在这一行

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

它将100 - 0100

于 2013-01-28T22:02:22.893 回答