Domanda

Ho le seguenti due funzioni ...

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

Il problema che ho è 'resp' è sempre NaN anche se 'le zecche 1 ' sicuramente è?

PS: io non sono un JavaScript sviluppatore quindi cerca di essere bello se si tratta di codice poveri .

È stato utile?

Soluzione

Il tuo splitTitleString() restituisce un valore di matrice.

Tuttavia, quando si definiscono ticks, dici var ticks = new Array(splitTitleString(titleText));. Si definisce una matrice costituita da uno elemento- il valore restituito splitTitleString.

Come risultato, ticks[0] non è ovviamente un numero intero, è un array!

EDIT: Per risolvere il problema, riscrivere la funzione in questo modo:

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

Altri suggerimenti

Se si accede resp di fuori della funzione warning(), il problema è che utilizzando var resp, si definisce una nuova variabile che è visibile solo all'interno della funzione di contenimento . Se resp si suppone che sia una variabile globale, rimuovere la parola chiave var e si dovrebbe andare bene.

Vedi qui per una bella carrellata su variabili locali e globali in Javascript: portata variabile e la var parola chiave

A parte quanto detto Pekka correttamente, parseInt preferisce avere un parametro radix. Dalla documentazione:

  

Se il parametro radix viene omesso,   JavaScript presuppone quanto segue:

     
      
  • Se la stringa inizia con "0x", il   radix è 16 (esadecimale)
  •   
  • Se il   stringa inizia con "0", la radice è 8   (Ottale). Questa funzione è deprecato
  •   
  • Se la stringa inizia con qualsiasi altro   il valore, la radice è 10 (decimale)
  •   

Che cosa siete passando come parametro "TitleText", verificare se è davvero un int. Voglio dire [1]

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top