Frage

Ich habe die folgenden zwei Funktionen ...

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

Und ...

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

Das Problem, das ich habe, ist 'bzw.' ist immer NaN obwohl Zecken 1 ' definitiv ist?

PS: Ich bin kein JavaScript Entwickler also bitte schön, wenn es schlecht Code ist .

War es hilfreich?

Lösung

Ihre splitTitleString() gibt ein Array-Wert.

Wenn Sie jedoch ticks definieren, sagen Sie var ticks = new Array(splitTitleString(titleText));. Sie definieren ein Array, das aus einem Element- der Rückgabewert von splitTitleString besteht.

Als Ergebnis ticks[0] ist offensichtlich nicht eine ganze Zahl, es ist ein Array!

EDIT: Um es zu beheben, neu zu schreiben Ihre Funktion wie folgt aus:

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

Andere Tipps

Wenn Sie resp außerhalb der warning() Funktion zugreifen, Ihr Problem ist, dass var resp unter Verwendung Sie eine neue Variable definieren, die sichtbar ist nur in der Funktion enthalten . Wenn bzw. soll eine globale Variable sein, die var Keyword entfernen und Sie sollten in Ordnung sein.

Sehen Sie hier für einen schönen Überblick über lokale und globale Variablen in Javascript: Variable Umfang und die var Stichwort

Neben was Pekka richtig gesagt, zieht ParseInt einen Radix Parameter haben. Aus der Dokumentation:

  

Wenn der Radix Parameter weggelassen wird,   JavaScript wird Folgendes vorausgesetzt:

     
      
  • Wenn die Zeichenfolge beginnt mit „0x“, die   Radix ist 16 (hexadezimal)
  •   
  • Wenn die   String beginnt mit "0", die Radix 8   (Oktal). Diese Funktion ist veraltet
  •   
  • Wenn die Zeichenfolge beginnt mit einem anderen   Wert, der Radix ist 10 (dezimal)
  •   

Was Sie als „title“ Parameter, die Prüfung sind vorbei, wenn es in der Tat ein int. Ich meine [1]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top