即使已经启动,添加多个数字变量也会返回NaN

时间:2020-05-21 07:47:48

标签: javascript

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

//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

我做错了什么还是错过了什么?

1 个答案:

答案 0 :(得分:1)

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

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

返回值有许多小数,因为它们被当作字符串并附加了。

也要这样更改。 var $ qty =滑块== 1 &&!isNaN(parseFloat($(“#qty”)。val()))?val:parseFloat($(“#qty”)。val());