CreateElement et insertBefore

ViPHP
ViPHP | 3607 Messages

23 nov. 2006, 11:29

Bonjour à tous,
voilà, je suis en train de faire une petite application qui a besoin de générer des divs imbriqué, et je n'y arrive pas, voilà le code que j'utilise:

Code : Tout sélectionner

//création de div conteneur var divautour = document.createElement( 'div' ) divautour.className = (classnote == undefined) ? 'note' : classnote divautour.id = sNoteId+'autour' // attributions de quelques valeurs // création du div contenu var hNewNote = document.createElement( 'div' ) document.insertBefore(hNewNote, document.getElementById(sNoteId+'autour')); // insertion dans le précédent => ne marche pas hNewNote.className = 'note'
voilà si vous aviez une idée de ce qui ne va pas
ci-joint le message d'erreur:

Code : Tout sélectionner

Erreur : uncaught exception: [Exception... "Node cannot be inserted at the specified point in the hierarchy" code: "3" nsresult: "0x80530003 (NS_ERROR_DOM_HIERARCHY_REQUEST_ERR)" location: "http://xxxxx.js Line: 38"]

Mammouth du PHP | 19672 Messages

23 nov. 2006, 11:37

Si l'élément doit être imbriqué dans un autre élément, utilise la méthode appendChild(). Plus de détails sur la manipulation via le DOM ICI
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 3607 Messages

23 nov. 2006, 12:01

Merci pour cette rapide réponse... je n'ai plus de messages d'erreur maintenant, mais ça ne fonctionne pas...
Voici ce que je veut obtenir

Code : Tout sélectionner

<div class="xxxautour"> <div class="xxx"> </div> </div>
et voici le nouveau code utilisé:

Code : Tout sélectionner

var divautour = document.createElement( 'div' ) divautour.className = (classnote == undefined) ? 'note' : classnote divautour.id = sNoteId+'autour' var hNewNote = document.createElement( 'div' ) divautour.appendChild(hNewNote) hNewNote.className = 'note'

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

23 nov. 2006, 14:01

Voilà comment je fais pour ajouter des li à un ul, les li contenant des liens (a)

Code : Tout sélectionner

var egt = document.createElement('li'); var lnk = document.createElement('a'); var texte = document.createTextNode(resultat.getAttribute('titre')); lnk.appendChild(texte); lnk.setAttribute('href', resultat.getAttribute('url')); lnk.setAttribute('title', resultat.getAttribute('titre')); egt.appendChild(lnk); document.getElementById('suggestions').appendChild(egt);
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

ViPHP
ViPHP | 3607 Messages

23 nov. 2006, 14:13

Ben c'est à peu de chose près ce que je fait non ?
j'ai essayer ceci:

Code : Tout sélectionner

var divautour = document.createElement( 'div' ) divautour.className = (classnote == undefined) ? 'note' : classnote divautour.id = sNoteId+'autour' var hNewNote = document.createElement( 'div' ) hNewNote.className = 'note' var sLinkVisible = 'visible' hNewNote.id = sNoteId document.getElementById(sNoteId+'autour').appendChild(hNewNote)
et voici l'erreur retournée:

Code : Tout sélectionner

Erreur : document.getElementById(sNoteId + "autour") has no properties Fichier source : http://xxxx.js Ligne : 46

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

23 nov. 2006, 15:58

Code : Tout sélectionner

alert(sNoteId + "autour")
ça donne quoi ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

ViPHP
ViPHP | 3607 Messages

23 nov. 2006, 16:08

ça donne ce qu'il faut le alert, mais je viens de me rendre compte que j'avais déja un appendChild plus bas dans le code (je reprend un code déja fait), et donc en le remplaçant, ça fonctionne!!
merci pour l'aide