Pregunta

Tengo las siguientes dos funciones ...

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

Y ...

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

El problema que tengo es 'resp' está siempre NaN a pesar de que 'garrapatas 1 ' definitivamente es?

PD: No soy un JavaScript desarrollador así que por favor sea agradable si se trata de código de pobres .

¿Fue útil?

Solución

Su splitTitleString() devuelve un valor de matriz.

Sin embargo, cuando se define ticks, se dice var ticks = new Array(splitTitleString(titleText));. Se define una matriz que consiste en una element- el valor de retorno de splitTitleString.

Como resultado, ticks[0] obviamente no es un entero, es una matriz!

EDIT: Para solucionarlo, reescribir su función 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.... 
} 

Otros consejos

Si accede a resp fuera de la función warning(), su problema es que mediante el uso de var resp, se define una nueva variable que es visible sólo dentro de la función que contiene . Si resp se supone que es una variable global, quite la palabra clave var y que debe estar bien.

Vea aquí por un buen resumen de las variables locales y globales en Javascript: alcance variable y la var palabra clave

Además de lo que dijo Pekka correctamente, parseInt prefiere tener un parámetro radix. A partir de los documentos:

  

Si se omite el parámetro radix,   JavaScript supone lo siguiente:

     
      
  • Si la cadena comienza con "0x", la   radix es 16 (hexadecimal)
  •   
  • Si el   cadena comienza con "0", la raíz es 8   (Octal). Esta característica está en desuso
  •   
  • Si la cadena comienza con cualquier otra   valor, el radix es 10 (decimal)
  •   

¿Qué estás pasando como parámetro "TitleText", comprobar si es de hecho un int. Me refiero a [1]

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top