2010-01-14 81 views
1

我有以下两个功能......JavaScript是NaN,但我知道它不是?

function splitTitleString(titleText) 
{ 
    var titleText = titleText; 
    var temp = new Array(); 
    temp = titleText.split(' - '); 
    var now = new Date().getTime(); 
    var warningExpResp = 7200000; 
    var expRespDateTimeTicks = 0; 
    var slaDateTimeTicks = 0; 

    if(temp[0].length > 0) 
    { 
    slaDateTimeTicks = getTicks(temp[0]); 
    } 

    if(temp[1].length > 0) 
    { 
     expRespDateTimeTicks = getTicks(temp[1]); 
    } 

    var returnTicksArray = new Array(slaDateTimeTicks,expRespDateTimeTicks); 

    return returnTicksArray; 
} 

而且......

function warning(titleText, serverDateTime, warningLengthMins, warningType) 
{ 
    var warningLengthTicks = warningLengthMins * (60 * 1000); 
    var ticks = new Array(splitTitleString(titleText)); 
    var sla = parseInt(ticks[0]); 
    var resp = parseInt(ticks[1]); 
    var serverTicks = getTicks(serverDateTime); 

    // some other work.... 
} 

我的问题是“RESP”始终是NaN的,即使“滴答1”最绝的是?

PS:我不是一个JavaScript开发人员,所以请是很好,如果它的代码差。

+0

我完全不明白你想要在这里实现什么。 – mauris 2010-01-14 12:29:43

+0

你在哪里使用'resp'它返回'NaN'? – 2010-01-14 12:34:02

+1

[OT] FWIW,因为我知道你是JS的新手,所以这行不起作用:'var titleText = titleText;'titleText'参数已经在函数中定义了,就像'var'定义的一样它(你可以在函数内自由地改变它的值;这样做对函数以外没有影响,JavaScript变量总是按值传递)。 – 2010-01-14 12:36:22

回答

0

你的splitTitleString()返回一个数组值。

然而,当你定义ticks,你说var ticks = new Array(splitTitleString(titleText));。您可以定义一个数组,其中包含一个元素 - splitTitleString的返回值。

结果,ticks[0]显然不是一个整数,它是一个数组!

编辑:为了解决这个问题,重写功能是这样的:

function warning(titleText, serverDateTime, warningLengthMins, warningType) 
{ 
    var warningLengthTicks = warningLengthMins * (60 * 1000); 
    //I removed the "new Array()" from the next line 
    var ticks = splitTitleString(titleText); 
    var sla = parseInt(ticks[0]); 
    var resp = parseInt(ticks[1]); 
    var serverTicks = getTicks(serverDateTime); 

    // some other work.... 
} 
+0

Thankyou ...确实是这个问题:-) – Dooie 2010-01-14 13:00:21

3

如果您在warning()功能外访问resp,你的问题是,通过使用var resp,你定义一个新的变量是可见仅在含有功能。如果resp应该是一个全局变量,删除var关键字,你应该没问题。

在这里看到的Javascript局部和全局变量的一个很好的破败:Variable scope and the var keyword

0

除了什么佩卡正确地说,parseInt函数倾向于有一个基数的参数。从该文档:

如果省略radix参数, JavaScript的假定:

  • 如果字符串以 “0x” 开始时, 基数为16(十六进制)
  • 如果 字符串以“0”开头,基数为8 (八进制)。此功能已被弃用
  • 如果字符串与任何其他 值开头,基数是10(十进制)
0

什么是你传递的“titleText”参数,检查它是否确实是一个int。我的意思是[1]

相关问题