Problème avec le DOM [Résolu]

nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 28 mai 2008 à 19:20 - Dernière réponse : nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention
- 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é !
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 29 mai 2008 à 14:45
3
Merci
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]

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_bultez
Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 29 mai 2008 à 18:48
3
Merci
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)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de PetoleTeam
Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 30 mai 2008 à 14:36
3
Merci
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)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de PetoleTeam
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 29 mai 2008 à 09:15
0
Merci
Bonjour,
Supprimes les paranthéses sur les fonctions loadée
if(document.attachEvent) {
  document.attachEvent("onload", griserInterface);
}
else {
 document.addEventListener("load", griserInterface, false);
}
;O)
Commenter la réponse de PetoleTeam
Anthed 152 Messages postés dimanche 20 février 2005Date d'inscription 17 janvier 2014 Dernière intervention - 29 mai 2008 à 09:56
0
Merci
Hello,
Un simple suffirait, non ?
Tchô.
Commenter la réponse de Anthed
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 29 mai 2008 à 11:12
0
Merci
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)
Commenter la réponse de PetoleTeam
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 mai 2008 à 16:33
0
Merci
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é !
Commenter la réponse de nicomilville
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 mai 2008 à 16:40
0
Merci
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é !
Commenter la réponse de nicomilville
Anthed 152 Messages postés dimanche 20 février 2005Date d'inscription 17 janvier 2014 Dernière intervention - 29 mai 2008 à 17:06
0
Merci
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+.
Commenter la réponse de Anthed
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 29 mai 2008 à 17:31
0
Merci
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)
Commenter la réponse de PetoleTeam
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 mai 2008 à 18:02
0
Merci
@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é !
Commenter la réponse de nicomilville
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 mai 2008 à 18:39
0
Merci
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é !
Commenter la réponse de nicomilville
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 29 mai 2008 à 20:53
0
Merci
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é !
Commenter la réponse de nicomilville
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 30 mai 2008 à 16:24
0
Merci
ok, je test !

a++

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

a++

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.