Problème avec le DOM

[Résolu]
Signaler
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
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]
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
Supprimes les paranthéses sur les fonctions loadée
if(document.attachEvent) {
  document.attachEvent("onload", griserInterface);
}
else {
 document.addEventListener("load", griserInterface, false);
}
;O)
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Hello,
Un simple suffirait, non ?
Tchô.
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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é !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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é !
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
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+.
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
@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é !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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é !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
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é !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
ok, je test !

a++

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

a++

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