Problème avec le DOM

Résolu
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 28 mai 2008 à 19:20
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 30 mai 2008 à 16:25
Salut,

Voila j'ai un problème de fonction, normalement, je charge ma fonction une fois que le DOM est construit avec attachEvent sous ie et addEventListener pour tout les autres navigateurs !

voici mon code javascript :

function griserInterface() {
 document.getElementById('boite').style.zIndex = "50";
 document.getElementById('boite').style.padding = "100px";
 document.getElementById('boite').style.backgroundColor = "grey";
 if(document.all) {
 document.getElementById('boite').style.filter = alpha(opacity=50);
 } else {
 document.getElementById('boite').style.opacity = "0.5";
 }
}


if(document.attachEvent) {
 document.attachEvent("onload", griserInterface());
} else {
 document.addEventListener("load", griserInterface(), false);
}

et voici mon code html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
 <head>
  <title>Boite de dialogue</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <script src="dialogue.js"></script>
 </head>
 
  
bonjour

 
</html>

mais ça ne marche pas, j'ai une erreur comme quoi getElementById('boite') n'a pas de propriété...

l'erreur :

Erreur : document.getElementById("boite") has no properties
Fichier source : [file:///C:/Users/nicolas/Desktop/Mes%20Cr%C3%A9ations/boite_de_dialogue/dialogue.js file:///C:/Users/nicolas/Desktop/Mes%20Cr%C3%A9ations/boite_de_dialogue/dialogue.js]
Ligne : 2

Merci d'avance !

a++







Si la réponse vous convient, pensez : Réponse accepté !

15 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 mai 2008 à 14:45
Bonjour,

    perso je préfère ( pour FF, mais pour IE le pendant est pareil  )
        window.addEventListener (  "load",
                                    function()
                                    { griserInterface(); },
                                    false );

    parce que s'il y a des paramètres à passer pour griserInterface(paramètres.... )
            ça reste valable....
          quelques ( menues ) explications ici

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
29 mai 2008 à 18:48
Fonction incorrecte sur l'appel de appendChild

function init() {
 var div =
document.createElement('div');
 div.setAttribute('id', 'boite');
// var conteneur = document.getElementByTagName('body');

 document.body.appendChild( div);
 griserInterface();
}

;O)
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
30 mai 2008 à 14:36
Bonjour,
il te faut plutôt affecter la fonction
sur window et non document
if( window.attachEvent) {
 window.attachEvent("onload", init);
}
else {
 window.addEventListener("load", init, false);
}

;O)
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
29 mai 2008 à 09:15
Bonjour,
Supprimes les paranthéses sur les fonctions loadée
if(document.attachEvent) {
  document.attachEvent("onload", griserInterface);
}
else {
 document.addEventListener("load", griserInterface, false);
}
;O)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Anthed Messages postés 152 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 17 janvier 2014 3
29 mai 2008 à 09:56
Hello,
Un simple suffirait, non ?
Tchô.
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
29 mai 2008 à 11:12
Bonjour,
Anthed
entièrement d'accord avec toi, sauf que l'on a pas le contexte global...
Il
reste intéréssant de noter les 2 façons d'affecter les fonctions sur à
événement,
par affectation directe
()">
 ou par adresse et dans ce dernier
cas il ne faut pas mettre les parenthéses...
document.addEventListener("load", griserInterface,
false);
;O)
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
29 mai 2008 à 16:33
Salut tout le monde,

Merci pour vos réponse !

@Anthed : entièrement daccord sauf que dans mon cas je sépare tout mon javascript du html et je trouve cette manière de faire plus propre !

@bultez : je suis également daccord mais dans cette fonction il n'y a pas de paramètres !

@PetoleTeam : je test et je te tiens au courant !

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
29 mai 2008 à 16:40
Re,

ça ne change rien, a part que j'ai une autre erreur :

la ligne concerné :

content webdeveloper jar:chrome/webdeveloper.jar!/content/webdeveloper/ contentaccessible=yes

l'erreur :

Avertissement : Warning: Unrecognized chrome registration modifier 'contentaccessible=yes'.
Fichier source : [file:///C:/Users/nicolas/AppData/Roaming/Mozilla/Firefox/Profiles/yzm3ulce.default/extensions/%7Bc45c406e-ab73-11d8-be73-000a95be3b12%7D/chrome.manifest file:///C:/Users/nicolas/AppData/Roaming/Mozilla/Firefox/Profiles/yzm3ulce.default/extensions/%7Bc45c406e-ab73-11d8-be73-000a95be3b12%7D/chrome.manifest]
Ligne : 2

a++

PS : j'utilisait la fonction filter mais je l'ai retiré, le problème c'est que j'ai toujours ce message d'erreur !

Si la réponse vous convient, pensez : Réponse accepté !
0
Anthed Messages postés 152 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 17 janvier 2014 3
29 mai 2008 à 17:06
nicomilville, quand tu dis que tu sépares ton code javascript, cela signifie-t-il que l'externalise dans un fichier js ? Si tel est le cas (effectivement c'est plus propre), je ne vois pas en quoi ma solution ne satisfait pas cette façon de faire.
Je ne joue pas au susceptible, je n'essaie pas de faire l'apologie de ma solution (toujours être AWARE ... :) ), c'est juste de la curiosité.
Merci. A+.
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
29 mai 2008 à 17:31
To nicomilville
<table bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, ça ne change rien, a part que j'ai une autre
erreur</td>
</td></tr></tbody></table>donc ça
change...
L'erreur, la nouvelle peut être, est ailleurs...

To TheBultez, je ne suis pas fan des fonctions anonymes
qui pêchent par leur manque de lisibilté, pas toujours il est vrai, et pour passer des
paramètres il y a toujours possibilité d'avoir recours à une fonction tampon.

To Anthed, il est vrai que quand je
passe par un fichier JS externe, j'utilise les addEventListener et consor et que
lorsque j'intégre le script dans la page je mets directement sur la balise, la
meilleur ??? perso pas de bille pour répondre.

;O)
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
29 mai 2008 à 18:02
@Anthed : effectivement j'externalise tout dans un fichier js et je ne vois pas pourquoi je jouerai le suceptible, ce n'ai pas mon genre !

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
29 mai 2008 à 18:39
Je n'ai plus aucune erreur mais mon code ne m'affiche toujours rien !

code :

function init() {
 var div = document.createElement('div');
 div.setAttribute('id', 'boite');
 var conteneur = document.getElementByTagName('body');
 div.appendChild(conteneur);
 griserInterface();
}


function griserInterface() {
 document.getElementById('boite').style.height = "100px";
 document.getElementById('boite').style.width = "100px";
 document.getElementById('boite').style.backgroundColor = "black";
 document.getElementById('boite').style.zIndex = "50";
}


if(document.attachEvent) {
 document.attachEvent("onload", init);
} else {
 document.addEventListener("load", init, false);
}

merci d'avance

a++







Si la réponse vous convient, pensez : Réponse accepté !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
29 mai 2008 à 20:53
je n'ai plus aucune erreur mais tout ce que j'ai c'est une page blanche !

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
30 mai 2008 à 16:24
ok, je test !

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
30 mai 2008 à 16:25
ça marche, merci

a++

Si la réponse vous convient, pensez : Réponse accepté !
0
Rejoignez-nous