1

我有以下两个功能...

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 即使 'ticks 1 ' 最肯定是?

PS:我不是JavaScript开发人员,所以如果代码很糟糕,请多多关照。

4

4 回答 4

3

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

有关 Javascript 中局部和全局变量的详细介绍,请参见此处:变量范围和 var 关键字

于 2010-01-14T12:28:54.627 回答
0

除了 Pekka 正确所说的之外, parseInt 更喜欢有一个 radix 参数。从文档:

如果 radix 参数被省略,JavaScript 假设如下:

  • 如果字符串以“0x”开头,则基数为 16(十六进制)
  • 如果字符串以“0”开头,则基数为 8(八进制)。此功能已弃用
  • 如果字符串以任何其他值开头,则基数为 10(十进制)
于 2010-01-14T12:34:14.747 回答
0

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

于 2010-01-14T12:35:02.960 回答
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.... 
} 
于 2010-01-14T12:48:47.603 回答