OVH Cloud OVH Cloud

Créer un élément et lui affecter un id

25 réponses
Avatar
BMR
Bonjour,

Je voudrais créer un élément et lui affecter un id, pour le retrouver
dans une autre fonction et éviter de le mettre en variable globale. Mais
je n'y arrive pas avec ce code (ni sous IE ni sous Firefox) :

var boite_aide = document.createElement("DIV");
boite_aide.setAttribute("id", "boite_aide");

ou bien

var boite_aide = document.createElement("DIV");
boite_aide.attributes["id"].nodeValue = "boite_aide";

pour le retrouver : var obj = document.getElementById("boite_aide");

Réponse du debugger de Firefox : "boite_aide.attributes.id has no
properties" ou "obj has no properties".

Merci,

BMR

5 réponses

1 2 3
Avatar
News M Claveau /Hamster-P
Bonjour !

Comme l'a fait remarquer Bobe, la première méthode est normalisée (en
javascript). Pour ce qui est des autres langages, je me méfierais de la
notion de standard. Chaque langage ayant ses propres normes, c'est plus
dépendant du choix des langages, qu'une généralité vraie.

Une chose peut sembler dommage, c'est qu'il arrive qu'une solution
"normalisée" ne fonctionne pas tout le temps, alors qu'une solution
"non-normalisée" fonctionne. Mais il ne faut surtout pas en tirer trop vite
une conclusion.

Finalement, à chacun de faire son choix, en fonction de ses objectifs.

Et vive le pragmatisme !

@-salutations
--
Michel Claveau
Avatar
Jean-Marc Desperrier
Bobe wrote:
Non car ni innerHTML (néanmoins supporté par la plupart des
navigateurs), ni innerText (IE only peut-être supporté également par
Opera) ne sont normalisés.


Quel est la méthode normalisée pour remplacer innerHTML si j'ai sous
forme texte un morceau d'HTML que je souhaite insérer dans le contenu
d'un DIV ?

Avatar
Bobe
Do Re Mi chel La Si Do nous a dit le 04/03/2005 05:10:

Merci pour l'information sur textContent. C'est, effectivement,
intéressant.
Par contre, j'ai un problème :
- si, avec FireFox, ça fonctionne complètement
(création/affectation/visu),
- avec Internet Explorer, le texte n'est pas affiché (pas visualisé) ;
pourtant, il est bien présent dans le document (je peux l'afficher avec un
"alert", ou le voir, avec un analyseur de document externe).



Je doute qu'internet explorer gère textContent, c'est dans le DOM3 Core
(publication de la recommandation: 7 avril 2004, c'est récent).

À moins que vous ne compariez le fonctionnement de textContent et de
innerText ?

--
Bobe (Aurélien Maille)
http://webnaute.net

"la vie d'un geek est un combat perpétuel contre l'imperfection"

Avatar
Bobe
Jean-Marc Desperrier nous a dit le 04/03/2005 11:41:

Quel est la méthode normalisée pour remplacer innerHTML si j'ai sous
forme texte un morceau d'HTML que je souhaite insérer dans le contenu
d'un DIV ?



Hum, je dirais avec le DOM3 LS
<http://www.w3.org/TR/DOM-Level-3-LS/load-save.html> mais je ne sais pas
si ça marche sur un fragment de document.

J'ai trouvé des exemples d'utilisation de ce module là:
http://molily.de/dom-load-and-save

--
Bobe (Aurélien Maille)
http://webnaute.net

"la vie d'un geek est un combat perpétuel contre l'imperfection"

Avatar
Do Re Mi chel La Si Do
Bonjour !


J'ai fait quelques petits tests ; avec I.E. et textContext ; résultats :
- ça ne provoque pas d'erreur javascript ;
- l'information est traitée, puisqu'on peut retrouver le contenu par la
suite ;
- le "résultat" n'est pas affiché.

Cela me fait un peu l'impression que IE accepte la propriété, mais ne sait
pas quoi en faire. Un peu comme une balise nouvelle, mais acceptée.

En tout cas, ce n'est pas vraiment satisfaisant, puisque l'affichage manque.

Peut-être que, avec IE-7 ?


@-salutations
--
Michel Claveau
1 2 3