[DOM] : Probleme appendChild

: Probleme appendChild [DOM] - HTML/CSS - Programmation

Marsh Posté le 10-04-2008 à 15:40:26    

Bonjour,
 
J'ai un petit problème lors de ma création d'elements en DOM :
 
En effet, je voudrais au final que mon code HTML soit de la forme :  
 

Code :
  1. <div id="mainDiv">
  2.       <input type="button">
  3.       <div id="ajaxDiv">
  4.       ...
  5.       </div>
  6. </div>


 
Mais lorsque j'execute ce code là :
 

Code :
  1. elem = document.createElement("div" );
  2.     elem.setAttribute("id", "mainDiv" );
  3.     elem.setAttribute("style", "display:block" );
  4.     elem.setAttribute("class", "ajax" );
  5.     button = document.createElement("input" );
  6.     button.type = "button";
  7.     button.setAttribute("height", "18px;" );
  8.     button.setAttribute("id", "button" );
  9.     button.setAttribute("value", "!" );
  10.     div = document.createElement("div" );
  11.     div.setAttribute("id", "divlist" );
  12.     div.setAttribute("style", "display:block" );
  13.     div.innerHTML = "Test";
  14.     div.setAttribute("class", "ajax" );
  15.     elem.appendChild(button);
  16.     button.appendChild(div);


 
Je m'aperçois qu'il me génère un code qui est celui-ci:
 

Code :
  1. <div id="mainDiv" style="display: block;" class="ajax editable" title="">
  2.         <input type="button" height="18" id="button" value="!" title="">
  3.         <div id="divlist" style="display: block;" class="ajax">...</div>
  4. </input>
  5. </div>


 
Bizarrement sous Firebug en enlevant le </input> ça marche nikel et donc je voudrais comprendre pourquoi le  DOM me rajoute cette balise </input> que je ne veux évidemment pas.
 
Merci d'avance.

Reply

Marsh Posté le 10-04-2008 à 15:40:26   

Reply

Marsh Posté le 10-04-2008 à 16:49:57    

input est une balise qui ne peut rien contenir et toi dans ton code du fait :  
button.appendChild(div)
ce qui veut dire : met moi ce div dans le input, c'est un peut bête nan ? :)
fait un simple elem.appendChild(div) et ton pb est réglé.

Reply

Marsh Posté le 10-04-2008 à 16:54:13    

Bonjour,
C'est parce que tu attache ton element div en tant qu'enfant de l'element input, et non du div principal.
La ligne 20 devrait etre:

Code :
  1. elem.appendChild(div)
 

Bonne journée :)

 

[edit]Grillé :(


Message édité par Halike le 10-04-2008 à 16:54:38
Reply

Marsh Posté le 10-04-2008 à 16:59:16    

oui c'etait bien :) Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed