Erreur Javascript 'document.getElementById(...)' ?

chrbar Messages postés 6 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 18 janvier 2009 - 3 sept. 2008 à 16:57
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 4 sept. 2008 à 09:46
Bonjour,


J'essaye d'utiliser le script ci-dessous pour afficher un compteur qui passe de page en page, comme sur la page:
http://www.ensembleverslavenir.ca/fr/accueil/


Mais j'ai une erreur sous IE7, alors que cela fonctionne très bien sous IE6, Firefox (1, 2 et 3), Safari (2 et 3) et Opera (9).


Sous IE7, cela fonctionne correctement quand on ouvre une nouvelle page et que l'on passe d'une page à une autre, mais cela arrête de fonctionner quand on ouvre la page dans un nouvel onglet ou dans une nouvelle page via le bouton de droite de la souris sur un lien, le compteur ne fonctionne plus.


Cela peut venir d'un conflit avec les autres scripts présent dans la page?
J'ai activé les débogages de scripts dans IE, et j'obtiens cette erreur:


A Runtime Error has occurred.
Do you wish to Debug?
Line: 243
Error: 'document.getElementById(...)' is null or not an object.


La ligne concernée est:
document.getElementById("counter").innerHTML = r2(sTotal*2.91);


Le script est:
<script language="JavaScript" type="text/javascript">
var sTotal = 0;
if (lire_cookie('compteur'))
    sTotal = parseFloat(lire_cookie('compteur'));


function gazCount(start){
sTotal=sTotal+(0.1);
document.getElementById("counter").innerHTML = r2(sTotal*2.91);
document.cookie="compteur=" + sTotal;
setTimeout("gazCount();", 100);
}
function r2(n){
ans = n * 1000
ans = Math.round(ans /10) + ""
while (ans.length < 3) {ans = "0" + ans}
len = ans.length
ans = ans.substring(0,len-2) + "." + ans.substring(len-2,len)
return ans
}
function lire_cookie(nom) {
  var arg=nom+"=";
  var alen=arg.length;
  var clen=document.cookie.length;
  var i=0;
  while (i<clen){
    var j=i+alen;
    if (document.cookie.substring(i, j)==arg)
       return arguments_cookies(j);
    i=document.cookie.indexOf(" ",i)+1;
    if (i==0) break;
  }
  return false;
}
function arguments_cookies(offset){
  var endstr=document.cookie.indexOf (";", offset);
  if (endstr==-1) endstr=document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}


setTimeout('gazCount()', 100);
</script>


Seriez-vous comment corriger ce problème?
Merci beaucoup :)
Chris

4 réponses

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 sept. 2008 à 17:34
Salut,

Ton script est dans le head ?

Faut faire une vérification pour savoir si le DOM est déja construit !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
chrbar Messages postés 6 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 18 janvier 2009
3 sept. 2008 à 17:40
Oui j'ai bien placé le script dans le head de la page.
Comment peut-on vérifier si le DOM est déja construit?
Merci,
Chris
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 sept. 2008 à 17:46
en faisant comme ça :

document.onload = function() {
      //instruction
}

a++

PS : si ça ne vient pas d'ici alors je ne sais pas d'ou ça vient...

Si la réponse vous convient, pensez : Réponse acceptée !
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 sept. 2008 à 09:46
bonjour
1° c'est quoi l'élément "counter" ? t'es sur qu'il possède un innerHTML ?
2° avec ce que tu nous donnes, ça baigne ( si on crée un div id="counter" par exemple )
    pas compris ton histoire de lien....
CordialementBul[mon Site][M'écrire] |
0
Rejoignez-nous