我有以下两个功能......
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开发人员,所以如果代码很差,请不要好。
答案 0 :(得分:3)
如果您在resp
函数之外访问warning()
,则问题在于使用var resp
,您只能在包含函数中定义一个可见的新变量< / em>的。如果resp应该是一个全局变量,请删除var
关键字,你应该没问题。
请参阅此处,了解Javascript中的本地和全局变量的简要说明:Variable scope and the var keyword
答案 1 :(得分:0)
除了Pekka正确说的,parseInt更喜欢有一个基数参数。来自文档:
如果省略radix参数, JavaScript假设如下:
- 如果字符串以“0x”开头,则为 基数为16(十六进制)
- 如果 字符串以“0”开头,基数为8 (八进制)。不推荐使用此功能
- 如果字符串以任何其他字符串开头 值,基数为10(十进制)
答案 2 :(得分:0)
你传递的是什么“titleText”参数,检查它是否确实是一个int。我的意思是[1]
答案 3 :(得分: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....
}