GetElementById dans <div> imbriquées

Signaler
Messages postés
6
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
23 février 2008
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

j'ai un fichier xhtml comme ceci :

           
       

           
       

           
       

           

       
           
       

       
       

            

   

puis un fichier javascript dans lequel je veux faire ca par exemple :

document.getElementById("formu").innerHTML = "salut";

mais le debugger me dit :
document.getElementById("formu") has no properties




mais ce qui est bizarre c que j'arrive tres bien a acceder au "content" par document.getElementById("content") alors que lui
aussi est imbriqué dans
..

Pouvez vous m'aider??

13 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

    du xml... enfin, si on veut, là on ne vois que du html

    et les balises   ? elles existent      si non : les mettre, c'est du à cela.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
6
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
23 février 2008

oui les balises existent
voici tout le contenu XHTML (je n'ai dit a aucun moment XML)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" src="../javascript/formulaire.js"></script>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="../impletion.css" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="../style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
</head>

    

    
            
        

            
        

            
        

            

            
            
            

        
            
        

        
        

            
    
    
                    

</html>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
ah....
mais qu'y a-t-il dans le .js ?

parce que si je met

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
function AfficheDocXML()
{    document.getElementById("formu").innerHTML="exemple";
}
</script>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="../impletion.css" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="../style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
</head>
   
   
           
       

           
       

           
       

           

           
           
           

       
           
       

       
       

           
   
   
                   

</html>

    ben... ça baigne ( testé uniquement avec FF et IE  )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
si  document.getElementById("formu").innerHTML="exemple";
    n'est pas dans une fonction, comme le navigateur interpréte en séquence, ligne par ligne,
    lorsque qu'il exécute, l'ID n'existe pas encore.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
Salut, pour ton problème il serait bien de mettre le code qui se trouve dans le fichier javascript, sinon pour la remarque de bultez sur le XML, je pense qu'elle est lié au fait que tu ai dit XHTML : Xml and Hyper Text Markup Language, car le X de XHTML signifie XML ce qui veut dire que c'est un mélange de XML et de HTML et qu'il pense que ça ressemble plus a du HTML tout cour qu'a du XHTML !!!

Si t'a besoin d'aide, MP !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
dieu me tripote nicomville, tu as raison : définition xhmtl
     pour le contenu du .js aussi !
mais bon, c'est comme le questionneur le sent...
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
6
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
23 février 2008

Voici le contenu mais je sais pas si ca va t'aider..
le truc ce ke tout marche et kan je met la ligne rose en commentaire
tout ce passe normalement..

je c c bizarre!!





this.chargerContenu = function(language) {
        
        var uti = new Util();
        var xhrcontent = uti.createXHR();
        
        xhrcontent.open("GET","../xml/Formulaire.xml",true);
                
        xhrcontent.onreadystatechange=function() {
        
            if(xhrcontent.readyState == 4) {                    
                var doc = xhrcontent.responseXML;
                
                //Selection de la langue pour l'affichage du contenu du site
                //Cf. fichier Contenu.xml
                switch (language) {
                    case "fr" :
                    //Position sur langue "francais"
                        var lan = doc.getElementsByTagName("langue").item(0);
                        break;
                        
                    case "en" :
                    //Position sur langue "english"
                        var lan = doc.getElementsByTagName("langue").item(1);
                        break;            
                }
                                                
                //AFFICHAGE DU CONTENT
                //****************************************************
                //Nétoie le contenu du div avant son chargement
                document.getElementById("content").innerHTML = "";
                document.getElementById("formu").innerHTML = "tatatatatatatat";
                
                document.getElementById("content").innerHTML = "" +
                lan.getElementsByTagName("titre").item(0).firstChild.data + "
";
                    
                document.getElementById("content").innerHTML += "" +
                lan.getElementsByTagName("explication").item(0).firstChild.data + "

";
                
                for(var i=0;i<lan.getElementsByTagName("champ").length;i++) {
                   
                     //ce que je voudrais :
                    //



document.getElementById("formu").innerHTML




+= lan.getElementsByTagName("champ").item(i).firstChild.data;





                    document.getElementById("content").innerHTML += lan.getElementsByTagName("champ").item(i).firstChild.data;
                }
                
                
                //****************************************************
                                
            }
        };
        xhrcontent.send(null);        
    }   
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
                document.getElementById("formu").innerHTML = "tatatatatatatat";
               
relis ce que j'ai dit.
quand cette ligne est interprétée, exécutée, formu n'existe pas encore....



<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
6
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
23 février 2008

XHTML n'est pas un mélange de XML et HTML
C'est comme du HTML mais se basant sur la SYNTAXE du XML avec de
nouvelle norme d'ecriture de balises a respecter c'est tout
donc tu n'aurais jamais pu voir du XML dans un fichier XHTML!

et la XHTML ne signifie pas XML and HTML je sais pas quoi
mais simplement eXtensible HyperText Markup Language..
Messages postés
6
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
23 février 2008

Ben comment je fais alors?

http://www.w3.org/TR/xhtml1/
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
tu le fais après que l'élément soit défini...  

<hr size="2" width="100%" />       soit
...
<... id="formu"....
..
    ici on peut utiliser formu

    soit dans la fonction qui est appelée dans le onload du body, puisque
       elle sera exécutée lorsque la page aura été interprétée
       ( comme c'est montré aussi )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
6
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
23 février 2008

Merci de ton aide
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour à tous,
1st constat

 

 

donc le DIV formu appartient au DIV content

2nd constat
//Nettoie le contenu du div avant son chargement
document.getElementById("content").innerHTML = "";
donc a ce moment le
DISPARAIT

ce qui fait que l'appel
document.getElementById("formu").innerHTML = ...
devient illégal le DIV n'existant plus

;O)