Christophe Le Bot

  • Navigation rapide
Pratique de la conception numérique

Derniers commentaires

  • Installer Drupal 6 sur un serveur mutualisé OVH
    • Damien | Bravo pour ce billet, simple, efficace. J’aimerais trouver ce genre de réponse qui marche tout le temps !
  • Test d’interface : paiement d’amendes en ligne
    • Benoit | Bonjour, euh, moi je n’ai rien compris à ce stratagème pour faire oublier la clé (manquante) à l’interface de saisie. Je saisie les 14 chiffres de mon avis, le javascript saute...
  • Un bon petit rythme pour 2010
    • Christophe | @ Développeur Magento Moi aussi, j’ai hâte… mais de le finir ! C’est du boulot, beaucoup de boulot. @Maxime Merci pour le compte-rendu.
    • Maxime | Bonjour, voici un petit livrento, ou plutôt un résumendo (On croirait parler espagnol ou italien, c’est fun :-p ) de l’Apérogento qui s’est déroulé à Lyon mercredi 30...
    • Développeur Magento | J’ai vraiment hâte de lire ce livrento !
 

Javascript et ActionScript : le piège de parseInt()

Comme tous développeurs pressés, nous utilisons très souvent des fonctions de façon empirique, sans en comprendre le fonctionnement réel et les subtilités de paramétrage. Et parfois, on le paye cher en mal de crâne, suite à des comportements incompréhensibles… et pourtant normaux.

Prenons la fonction Javascript parseInt(). Elle permet de transformer une chaîne en nombre entier. Si on veut récupérer le département d’un code postal, le premier réflexe est de faire :

var departement = parseInt(codepostal.substring(0, 2));

En apparence tout fonctionne bien… sauf pour les départements 08 et 09 pour lesquels on obtient 0 ! Diable…

C’est oublier un peu vite le second paramètre radix qui définit la base numérique à utiliser. Il est vital car en son absence, la base numérique dépend du format de la chaîne. Dans notre cas, les codes postaux commençant par 0 sont convertis en entiers de base octale (ou base 8). Notre but est d’obtenir un entier en base décimale (ou base 10), on précise donc la valeur 10 au second paramètre de la fonction parseInt() :

var departement = parseInt(codepostal.substring(0, 2), 10);

Ouf ! Pour information, radix supporte les valeurs 0 (valeur par défaut, sélection d’une base hexadécimale, octale ou décimale selon le format de la chaîne) et de 2 à 36. Par exemple, si on souhaite un entier hexadécimal, radix sera égal à 16.

On ne m’y reprendra plus !