Cette page liste les réponses à apporter aux erreurs de fonctionnement d'un script.
Vous pouvez la lire en continu ou retrouver un fonctionnement anormal.
Le test if est incohérent
En javascript, l'opérateur "est égal à" est différent de l'affectation d'un contenu à une variable.
Pour affecter 1 à la variable nombre, on écrit :
nombre=1;
Pour détecter que la variable nombre vaut 1, on écrit :
if (nombre==1)
On note ici que :
- le signe = est doublé pour le test,
- le test est entre parenthèses.
Si vous écrivez :
if (nombre=1)
le test est toujours vrai et la valeur 1 est affectée à nombre.
Le test "est différent de" s'écrit if (nombre!=1). En javascript, le signe ! indique la négation.
Le résultat d'une fonction est incohérent
Les fonctions javascript attendent la plupart du temps des paramètres qui doivent être placés entre parenthèses et séparés par des virgules.
Même si une fonction n'a pas de paramètre, il faut lui ajouter les parenthèses.
Pour les fonctions internes au navigateur
Sans parenthèse, le résultat ne sera pas celui de la fonction, mais le code de la fonction.
Par exemple alert(Math.random) affichera :
function random() {
[native code]
}
Tandis que alert(Math.random()) affichera le résultat de la fonction, soit un nombre réel aléatoire compris entre 0 et 1.
Pour les fonctions définies par le développeur
Si vous définissez cette fonction :
function MaFunction() {
return 100
}
Un appel à la fonction de ce type :
var nombre=MaFunction
crée l'erreur :
'MaFunction' est indéfini
Dans ce cas, le navigateur recherche la variable MaFunction qui n'existe pas.
La bonne syntaxe est bien :
var nombre=MaFunction()
Boucle infinie
La boucle infinie est un classique des erreurs de comportement d'un script.
Il faut bien vérifier les points suivant :
- la condition de sortie de boucle est réalisable,
- la variable de compteur est bien incrémentée,
- le test de sortie est correctement écrit (voir le test if est incohérent)
Les calculs sont inexacts
Voir aussi la page "Javascript et les mathématiques".
Les calculs exécutés en javascript sont des calculs en virgule flottante, ce qui implique des arrondis.
Et même les arrondis à 15 chiffres après la virgule entraînent des erreurs ou plutôt des inexactitudes.
Par exemple, il peut arriver que le résultat de cos(pi) retourne -0.999999999999999.
Si l'erreur de calcul est due à un arrondi, il n'y a pas grand chose à faire.
Si l'erreur est plus importante, vérifiez les points suivants :
- Les fonctions trigonométriques utilisent les radians et non les degrés,
- Règle de priorité des opérations.
Gestion des cookies
Vérifiez d'abord l'utilisation et les fonctions de gestion des cookies sur la page "Javascript et les cookies".
Si le fonctionnement est correct en local mais incorrect en ligne sur le site, vérifiez :
- l'activation des cookies dans les options du navigateur, car en général, les cookies sont toujours actifs en local
- l'arborescence du site, car en local, tous les cookies sont stockés au même endroit; en ligne, il existe un stockage différent par répertoire.
Il se peut aussi que le cookie soit plein, en effet la taille est limitée à 2 ou 3 ko maxi.
Parfois quand cette limite est atteinte, le cookie ne répond plus.
L'idéal dans ce cas est de détruire sur le disque dur le fichier des cookies.
Différence local / online
Il arrive fréquemment que le fonctionnement soit correct pendant la phase de test en local, sur le disque dur et que le site ne passe pas du tout quand il est publié sur le net.
Il faut d'abord vérifier que le site complet a bien été transféré. L'idéal est de recommencer le transfert.
Si le problème persiste :
- Si vous utilisez les cookies, lisez cette réponse.
- Les liens doivent être créés en relatif. Il ne faut pas de lien du type href="c:\monsite\repertoire\page.htm", mais simplement href="repertoire\page.htm"
|