Bonjour,
j'ai une balise HTML :
En fonction de ce que l'utilisateur tape dans une balise input, cette balise span est modifiée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <span id='idMaBalise'></span>
Le problème c'est que si la balise est vide, le code suivant ne fonctionne pas que ce soit sous IE, FireFox ou Chrome (sinon ça fonctionne) :
donc j'ai complèté :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function remplacerContenu(idDomObjet, contenu) { var donnees = document.getElementById(idDomObjet).firstChild ; // La balise a une donnees et c'est la balise d'origine du HTML var longueurDonnees = donnees.length ; donnees.replaceData(0, longueurDonnees, contenu) ; }
Ca marche à la première modification, mais à la deuxième non, car donnees length est null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function remplacerContenu(idDomObjet, contenu) { var donnees = document.getElementById(idDomObjet).firstChild ; // Si la balise est vide donnees est undefined if (donnees) { // La balise a une donnees et c'est la balise d'origine du HTML var longueurDonnees = donnees.length ; donnees.replaceData(0, longueurDonnees, contenu) ; } else { // Creer un nouveau noeud var nouveauFils = document.createElement('span') ; var nouveauTexte = document.createTextNode(contenu) ; nouveauFils.appendChild(nouveauTexte) ; document.getElementById(idDomObjet).replaceChild(nouveauFils, donnees) ; } }
En effet, j'ai remarqué que si la n'est pas vide la première fois on a la propriété length.
si on créer des balise dynamiquement on a pas length
Donc, j'ai ce code :
Ma question est pourquoi on a pas length et pourquoi si on modifie la propriété nodeValue, ça ne fonctionne pas non plus ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function remplacerContenu(idDomObjet, contenu) { var donnees = document.getElementById(idDomObjet).firstChild ; // Si la balise est vide donnees est undefined if (donnees && donnees.length) { // La balise a une donnees et c'est la balise d'origine du HTML var longueurDonnees = donnees.length ; donnees.replaceData(0, longueurDonnees, contenu) ; } else { // Creer un nouveau noeud var nouveauFils = document.createElement('span') ; var nouveauTexte = document.createTextNode(contenu) ; nouveauFils.appendChild(nouveauTexte) ; // Si donnees != undefined c'est qu'on a deja cree le noeud if (donnees) { document.getElementById(idDomObjet).replaceChild(nouveauFils, donnees) ; } else { document.getElementById(idDomObjet).appendChild(nouveauFils) ; } } }
Merci
Partager