Pergunta

Eu tenho duas funções a seguir...

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;
}

E...

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....
}

O problema que eu tenho é 'resp' é sempre NaN mesmo que " carrapatos1'definitivamente é?

PS:Eu não sou um JavaScript desenvolvedor então por favor, seja agradável se é pobre código.

Foi útil?

Solução

Sua splitTitleString() Retorna um valor de matriz.

No entanto, quando você define ticks, você diz var ticks = new Array(splitTitleString(titleText));. Você define uma matriz que consiste em um elemento- o valor de retorno da divisão.

Como resultado, ticks[0] Obviamente, não é um número inteiro, é uma matriz!

Editar: Para corrigi -lo, reescreva sua função como esta:

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.... 
} 

Outras dicas

Se você estiver acessando resp fora o warning() função, o problema é que, ao utilizar var resp, você pode definir uma nova variável que é visível apenas dentro da função contendo.Se a resp é suposto ser uma variável global, remover o var palavra-chave e você deve ser fino.

Veja aqui um bom resumo sobre o local e o global variáveis em Javascript: Escopo de variável e a palavra-chave var

Além do que Pekka disse corretamente, o Parseint prefere ter um parâmetro Radix. Dos documentos:

Se o parâmetro Radix for omitido, JavaScript assume o seguinte:

  • Se a string começar com "0x", o Radix terá 16 (hexadecimal)
  • Se a string começar com "0", o Radix será 8 (octal). Este recurso está depreciado
  • Se a string começar com qualquer outro valor, o Radix será 10 (decimal)

O que você está passando como o parâmetro "titletext", verifique se é realmente um int. Quero dizer [1

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top