首页 > 解决方案 > 添加多个数字变量会返回 NaN,即使它已经启动

问题描述

我正在尝试获取多个变量的总和并将其传递给$total变量。我已经声明并初始化了所有变量并使用了parseInt,parseFloatNumberfunction 但无济于事。请在下面查看我的代码:

//gets value from a number slider
    var $qty = slider == 1?val:$("#qty").val();
    var $qly = slider == 2?val:$("#qly").val();
    var $js = slider == 3?val:$("#js").val();
    var $psd = slider == 4?val:$("#psd").val();
    var $org = slider == 5?val:$("#org").val();
    var $coop = slider == 6?val:$("#coop").val();
    var $att = slider == 7?val:$("#att").val();
    var $punc = slider == 8?val:$("#punc").val();
    var $comm = slider == 9?val:$("#comm").val();
    var $inter = slider == 10?val:$("#inter").val();
    var $ini = slider == 11?val:$("#ini").val();
    var $inno = slider == 12?val:$("#inno").val();
    var $flex = slider == 13?val:$("#flex").val();
    var $total = 0.0;
    var $sum = 0.0;

我试过的:

$total = $qty + $qly + $js + $psd + $org + $coop + $punc + $comm + $inter + $ini+ $inno + $flex;
// returns 7.5555552.52.52.52.52.52.5

$total = Number($qty) + Number($qly) + Number($js) + Number($psd) + Number($org) + Number($coop) + Number($punc) + Number(comm) + Number($inter) + Number($ini) + Number($inno) + Number($flex);    
//returns NaN

$total = parseFloat($qty) + parseFloat($qly) + parseFloat($js) + parseFloat($psd) + parseFloat($org) + parseFloat($coop) + parseFloat($punc) + parseFloat(comm) + parseFloat($inter) + parseFloat($ini) + parseFloat($inno) + parseFloat($flex);    
//returns NaN

$total = parseInt($qty) + parseInt($qly) + parseInt($js) + parseInt($psd) + parseInt($org) + parseInt($coop) + parseInt($punc) + parseInt(comm) + parseInt($inter) + parseInt($ini) + parseInt($inno) + parseInt($flex);    
//returns NaN 

$sum = parseFloat($qty) + parseFloat($qly) + parseFloat($js) + parseFloat($psd) + parseFloat($org) + parseFloat($coop) + parseFloat($punc) + parseFloat(comm) + parseFloat($inter) + parseFloat($ini) + parseFloat($inno) + parseFloat($flex);
$total = parseFloat($sum);
//returns NaN

我做错了什么或者我错过了什么?

标签: javascript

解决方案


在获取 $total 时,您需要将所有单个值解析为 number ,那么您将不会得到 NaN。

$total = $qty + $qly + $js + $psd + $org + $coop + $punc + $comm + $inter + $ini+ $inno + $flex; // 返回 7.5555552.52.52.52.52.52.5

返回值有很多小数,因为它们被视为字符串并被附加。

也改成这样。var $qty = slider == 1 && !isNaN(parseFloat($("#qty").val()))?val:parseFloat($("#qty").val());


推荐阅读