Page 1 sur 1

CreateElement et insertBefore

Posté : 23 nov. 2006, 11:29
par jojolapine
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"]

Posté : 23 nov. 2006, 11:37
par Cyrano
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

Posté : 23 nov. 2006, 12:01
par jojolapine
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'

Posté : 23 nov. 2006, 14:01
par mere-teresa
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);

Posté : 23 nov. 2006, 14:13
par jojolapine
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

Posté : 23 nov. 2006, 15:58
par mere-teresa

Code : Tout sélectionner

alert(sNoteId + "autour")
ça donne quoi ?

Posté : 23 nov. 2006, 16:08
par jojolapine
ç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