JeuWeb - Crée ton jeu par navigateur
[javascript] substr() sous FF2 / IE7 - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [javascript] substr() sous FF2 / IE7 (/showthread.php?tid=1233)



[javascript] substr() sous FF2 / IE7 - Roworll - 31-05-2007

bon, ce n'est pas plutôt une demande d'aide mais je souhaite juste faire partager un truc sur lequel j'ai buté quelques minutes.

La fonction substr() en javascript permet d'extraire une partie d'une chaîne de caractère.
Le premier paramètre indique à partir d'ou on commence à extraire et le 2e paramètre indique le nombre de caractères que l'on veut extraire.

En gros,
var sTst='0123456789';
alert(sTst.substr(2,6));

va renvoyer '234567'

Maintenant, il est possible de ne préciser que le premier paramètre.
L'extraction commence au caractère spécifié et se termine à la fin de la chaine.

var sTst='0123456789';
alert(sTst.substr(8));

va renvoyer '89'

Pour le moment, tout va bien sous IE et FF.

Là ou ça ce complique, c'est lorsque on utilise un paramètre négatif pour le premier paramètre.

sous FF,
var sTst='0123456789';
alert(sTst.substr(-4));

renvoie '6789'

Sous IE, cela renvoie... '0123456789'.

Ok, le truc peut sembler mineur mais ça peut s'avérer utile si on travaille sur des chaînes de caractères en JS.


RE: [javascript] substr() sous FF2 / IE7 - NicoMSEvent - 31-05-2007

sous FF ça a l'air d'etre la valeur absolue qui est prise tandis que sous IE, c'est l'entier non signé (-4 = 2³²-4 = 4294967292). Voilà pourquoi il t'a pris toute la chaine...


RE: [javascript] substr() sous FF2 / IE7 - naholyr - 31-05-2007

Non, c'est que lorsque FF rencontre un nombre négatif pour substr (exemple -X), il le considère comme chaine.length-X. IE le considère comme 0.


RE: [javascript] substr() sous FF2 / IE7 - NicoMSEvent - 31-05-2007

merci pour l'éclaircissement Smile