开发者

Why Does Flash Calculation Results in NaN?

I was asked by a client to reskin a Flash module here: http://www.bendelcorp.com/toolscalculators.html

Everything works correctly except the Pressure/Vacuum calcul开发者_开发问答ation. If you click on that tab and enter a number in the psi field and then click calculate it populates all fields with NaN (not a number).

Here is the legacy ActionScript:

on (release, keyPress "<Enter>") {
gotoAndStop("pressure/vacuum", 5);
if (inchofwater != "") {
    inchofwaterResult = Number(inchofwater);
    psiResult = Number(inchofwater)*0.03609119066;
    inchofmercuryResult = Number(inchofwater)*0.07348242091;
    barResult = Number(inchofwater)*0.0024884;
    milimeterofmercuryResult = Number(inchofwater)*1.866453491;
    torrResult = Number(inchofwater)*1.866453491;
    meterofwaterResult = Number(inchofwater)*.02537461824;
}
if (bar != "") {
    barResult = Number(bar);
    psiResult = Number(bar)*14.50377377;
    inchofmercuryResult = Number(bar)*29.52998751;
    inchofwaterResult = Number(bar)*401.864652;
    milimeterofmercuryResult = Number(bar)*750.0616827;
    torrResult = Number(bar)*750.0616827;
    meterofwaterResult = Number(bar)*10.19716213;
}
if (inchofmercury != "") {
    inchofmercuryResult = Number(inchofmercury);
    psiResult = Number(inchofmercury)*0.4911540775;
    inchofwaterResult = Number(inchofmercury)*13.60869699;
    barResult = Number(inchofmercury)*0.03386388158;
    milimeterofmercuryResult = Number(inchofmercury)*25.4;
    torrResult = Number(inchofmercury)*25.4;
    meterofwaterResult = Number(inchofmercury)*.3453154908;
}
if (psi != "") {
    psiResult = Number(psi);
    inchofmercuryResult = Number(psi)*2.036020967;
    inchofwaterResult = Number(psi)*27.7075924;
    barResult = Number(psi)*0.06894757293;
    milimeterofmercuryResult = Number(psi)*51.71493257;
    torrResult = Number(psi)*51.71493257;
    meterofwaterResult = Number(psi)*.7030695796;
}
if (milimeterofmercury != "") {
    milimeterofmercuryResult = Number(milimeterofmercury);
    psiResult = Number(milimeterofmercury)*0.0193367747;
    inchofmercuryResult = Number(milimeterofmercury)*0.03937007874;
    inchofwaterResult = Number(milimeterofmercury)*0.5357754719;
    barResult = Number(milimeterofmercury)*0.001333223684;
    torrResult = Number(milimeterofmercury);
    meterofwaterResult = Number(milimeterofmercury)*.01359509806;
}
if (torr !="") {
    torrResult = Number(torr);
    psiResult = Number(torr)*0.0193367747;
    inchofmercuryResult = Number(torr)*0.03937007874;
    inchofwaterResult = Number(torr)*0.5357754719;
    barResult = Number(torr)*0.001333223684;
    milimeterofmercuryResult = Number(torr);
    meterofwaterResult = Number(torr)*.01359509806;
}
if (meterofwater !="") {
    meterofwaterResult = Number(meterofwater);
    psiResult = Number(meterofwater)*1.422334331;
    inchofmercuryResult = Number(meterofwater)*2.89590252;
    inchofwaterResult = Number(meterofwater)*39.40945989;
    barResult = Number(meterofwater)*9806.65E-5;
    milimeterofmercuryResult = Number(meterofwater)*73.55592401;
    torrResult = Number(meterofwater)*73.55592401;
    meterofwaterResult = Number(meterofwater);
}
} 

I would appreciate some help here.

Thanks.


if (inchofwater != "")

All this does is test if inchofwater is an empty string, not whether it evaluates to a number. Number("a") is not an empty string, but it is NaN, after all. What is the value of inchofwater before attempting to cast it as a String?

Likewise, what are your other raw values that you're casting as Number on faith that the user input is what you expect?


The problem was in the calculations. There were a couple of elements that were listed that there were no corresponding fields for and the values were not being set to 0 before the calculations were being run, so I added a reset to the page when it loaded and then things were calculated correctly.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜