Javascript 当我尝试在.each函数之外使用变量时,该变量变为Nan

Javascript 当我尝试在.each函数之外使用变量时,该变量变为Nan,javascript,jquery,json,nan,Javascript,Jquery,Json,Nan,我正在从外部源获取JSON obj。看来是这样的: {"total":16231642,"totalamount":437442282.55} 我将其设置为全局变量,在each函数中设置,然后尝试在其外部检索,如下所示。但我得到一个Nan作为值。这个值是在函数中设置的,所以我不能完全确定为什么会发生这种情况 感谢您的帮助 $( document ).ready(function() { var todaystart; //Get vals from JSON txt

我正在从外部源获取JSON obj。看来是这样的:

{"total":16231642,"totalamount":437442282.55}
我将其设置为全局变量,在each函数中设置,然后尝试在其外部检索,如下所示。但我得到一个Nan作为值。这个值是在函数中设置的,所以我不能完全确定为什么会发生这种情况

感谢您的帮助

$( document ).ready(function() {
    var todaystart;
    //Get vals from JSON txt
        $.getJSON( "proxy.php", function( data ) {
        $.each(data, function (key, val) {
            if (key == 'totalamount')
            {
                var todaystart = val; //was using parseFloat before to ensure that the datatype was correct, in case anybody answers that.
                //alert(todaystart);                
            }
        });


        });


            //Total Earned
            var avgvol = 18556;
            var price = 26.95;
            var avg = avgvol * price;
            alert(todaystart);
            var avgpls = todaystart + avg;

            var numAnim = new countUp("totalmon", todaystart, avgpls, 0, 86400);
                numAnim.start();

        //Sess Earned       
            remavgpls = avgpls - todaystart;    
            var nu2Anim = new countUp("sessmon", 0, remavgpls, 0, 86400);
                nu2Anim.start();
        //Sess Time     
            var nu3Anim = new countUp("minmon", 0, 86400, 0, 864000);
                nu3Anim.start();
    });

删除if语句
var todaystart中的var关键字

 if (key == 'totalamount')
            {
                todaystart = val; //was using parseFloat before to ensure that the datatype was correct, in case anybody answers that.
                //alert(todaystart);                
            }
您的完整代码将被删除

$(document).ready(function () {
    var todaystart;
    //Get vals from JSON txt
    $.getJSON("proxy.php", function (data) {
        $.each(data, function (key, val) {
            if (key == 'totalamount') {
                todaystart = val; //was using parseFloat before to ensure that the datatype was correct, in case anybody answers that.
                //alert(todaystart);                
            }
        });

        calcualtion();


    });

});

function calcualtion() {

    var avgvol = 18556;
    var price = 26.95;
    var avg = avgvol * price;
    alert(todaystart);
    var avgpls = todaystart + avg;

    var numAnim = new countUp("totalmon", todaystart, avgpls, 0, 86400);
    numAnim.start();

    //Sess Earned       
    remavgpls = avgpls - todaystart;
    var nu2Anim = new countUp("sessmon", 0, remavgpls, 0, 86400);
    nu2Anim.start();
    //Sess Time     
    var nu3Anim = new countUp("minmon", 0, 86400, 0, 864000);
    nu3Anim.start();
}

注意:将计算代码移动到getJSON方法bcoz getJSON is Asynchronous function中,每次循环打开时都要声明变量“todaystart”,这应该避免。永远不要在循环中创建变量,而是将其作为全局变量,以提高客户端性能。

这只是一个var重新声明检查,谢谢。回答得很好。@Tapha很乐意帮助您:)