Question

Je les deux fonctions suivantes ...

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

Le problème que j'ai est 'resp' est toujours NaN même si 'tiques 1 ' est certainement le plus?

PS: Je ne suis pas un JavaScript développeur donc s'il vous plaît bien si c'est le code pauvre .

Était-ce utile?

La solution

Votre splitTitleString() retourne une valeur de tableau.

Cependant, lorsque vous définissez ticks, vous dites var ticks = new Array(splitTitleString(titleText));. Vous définissez un tableau qui se compose d'une element- la valeur de retour de splitTitleString.

Par conséquent, ticks[0] est évidemment pas un entier, il est un tableau!

EDIT: Pour résoudre ce problème, réécrire votre fonction comme ceci:

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

Autres conseils

Si vous accédez à resp en dehors de la fonction warning(), votre problème est que, en utilisant var resp, vous définissez une nouvelle variable qui est visible uniquement dans la fonction contenant . Si resp est censé être une variable globale, supprimer le mot-clé var et vous devriez être bien.

Voir ici pour une belle diminution des effectifs sur les variables locales et globales en Javascript: portée variable et le var mot-clé

En dehors de ce que Pekka dit à juste titre, parseInt préfère avoir un paramètre radix. De la documentation:

  

Si le paramètre radix est omis,   JavaScript suppose ce qui suit:

     
      
  • Si la chaîne commence par « 0x », le   radix est de 16 (hexadécimal)
  •   
  • Si la   chaîne commence par « 0 », le radix est 8   (Octal). Cette fonction est dépréciée
  •   
  • Si la chaîne commence par tout autre   valeur, la base est de 10 (en décimal)
  •   

Que faites-vous passer comme paramètre « titletext », vérifier si elle est en effet un int. Je veux dire [1]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top