在调用函数时获取NaN,但在Javascript中单击时不获取

时间:2015-07-28 05:31:50

标签: javascript

我在这里采用这种方法。它工作得很好,当我通过button激活它时给我输出。

但是,只运行方法onBtnClick();,它会将NaN作为返回值。当我使用<input type="button" id="btnEN2LL" onclick="javascript:onBtnClick();" value="Convert"/>从我的HTML文件调用该方法时,返回值是正确的。

onBtnClick();

function onBtnClick(){
    console.log(CnvEN2LL(21634.41000000015,33101.88000000082,0,','));
}

是否错误地调用了该方法?

编辑:

下面在同一个文件中声明所有方法

function CnvEN2LL(easting,northing,latLngFormat,delimiter)
    {
    var e1,M1,u1,lat1,T1,C1,v1,p1,D,latRad,lngRad,e2,lat,lon;
    var LatDD,LatMM,LatSS,LonDD,LonMM,LonSS,LL;
    e2=SecondEccentricity();
    e1=calc_e1();
    M1=calc_M1(northing);
    u1=calc_u1(M1);
    lat1=calc_lat1(u1,e1);
    T1=calc_T1(lat1);
    C1=calc_c1(lat1);
    v1=calc_v1(lat1);
    p1=calc_p1(lat1);
    D=(easting-PROJ_FALSEEASTINGS)/(v1*PROJ_SCALEFACTOR);
    latRad=(D*D/2.0)-(5.0+3.0*T1+10.0*C1-4.0*C1*C1-9.0*Math.pow(e2,2))*(Math.pow(D,4)/24.0)+(61.0+90.0*T1+298.0*C1+45.0*T1*T1-252.0*Math.pow(e2,2)-3.0*C1*C1)*(Math.pow(D,6)/720.0);
    latRad=lat1-v1*Math.tan(lat1)*latRad/p1;
    lat=CnvRadToDeg(latRad);
    lngRad=(D-(1.0+2.0*T1+C1)*Math.pow(D,3)/6.0+(5.0-2.0*C1+28.0*T1-3.0*C1*C1+8.0*Math.pow(e2,2)+24.0*T1*T1)*Math.pow(D,5)/ 120.0) /Math.cos(lat1);
    lngRad=CnvDegToRad(PROJ_NATURALORIGINLONGITUDE)+lngRad;
    lon=CnvRadToDeg(lngRad);
    LatDD=Math.floor(lat);
    LatMM=Math.floor((lat-LatDD)*60);
    LatSS=(Math.round((((lat-LatDD)-(LatMM/60))*60*60)*100)/100);
    LatSS=roundNumber(LatSS,4);
    LonDD=Math.floor(lon);
    LonMM=Math.floor((lon-LonDD)*60);
    LonSS=(Math.round((((lon-LonDD)-(LonMM/60))*60*60)*100)/100);
    LonSS=roundNumber(LonSS,4);
    if(latLngFormat===0)
        {
        LL=lat+delimiter+lon
    }
    else if(latLngFormat==1)
        {
        LL=LatDD+':'+LatMM+':'+LatSS+delimiter+LonDD+':'+LonMM+':'+LonSS
    }
    return LL
}

1 个答案:

答案 0 :(得分:2)

由于我对这个问题的评论是实际问题,我会将其作为答案发布。

听起来像PROJ_FALSEEASTINGSPROJ_SCALEFACTOR等其他常量或其他常量可能尚未正确分配值。如果在您第一次调用onBtnClick();后为其分配了值,那么在第一次运行它们时它们仍然无法初始化,但是当它在稍后的实际点击事件中运行时,它们将具有适当的值值。

此类问题肯定会导致NaN,因为您尝试使用undefined值进行数学运算。