11550 sujets

JavaScript, DOM et API Web HTML5

Salut a tous,

Avant toute chose compliments a tous je rencontres rarement des forums ou les gens sont aussi courtois clairs et concis.

Pour continuer, je suis en stage dans une entreprise qui m'as "commandé une mission", étant étudiant en première année dans une école xyz, j'ai quelques petits soucis avec certaines parties du codes en javascript.

Ce n'est pas exactement mon soucis en fait ... ce sont des petites choses que je finirais par règler a force de petites heures de nicotines aromatisées à la caféïne et au jazz Smiley cligne .

En réalité ma question porte sur les contrindication de l'objet javascript:

document.getElementById("liddelobjet").innerHTML="something";


Prenons par exemple un cas qui m'as posé quelques soucis :

document.getElementById("id_dun_tr_html").innerHTML="<table></table>";


Voila, l'insertion dans un tableau prééxistant d'un nouveau tableau. J'ai surement écris une bétise, mais lorsque que je charge le code dans un broswer bien connu (IE) j'ai droit a la réponse = "Erreure d'éxécution inconnue".

Donc j'ai surement du faire une bétise quelque part, j'ai appris le javascript un peu "sur le tas" grâce a un autre site bien apparement connu, et si vous pouviez m'indiquez un site qui m'expliquerais les choses " a ne PAS faire cela m'aiderais beaucoups.

Merci encore de votre temps de lecture, désolé pour les éventuelles fautes d'orthographe ou encore de conduite dans l'écriture de ce méssage.
Modifié par Diamon (29 Jul 2005 - 16:05)
Bonjour Diamon et bienvenue sur ce forum Smiley cligne

Question Javascript, je déplace dans le salon « DOM, JavaScript, ECMAScript »

--
Stephan
Salut,

En attendant que quelqu'un de plus expérimenté te réponde :
j'ai lu sur ce forum que innerHTML est déprécié [edit: en fait non, désolé, cf messages suivants], à éviter [edit: quand même Smiley langue ]
Par contre document.createElement ("table") devrait t'aider ... à faire des recherches au moins... recherche sur ce forum
Modifié par ___seb (30 Jul 2005 - 15:50)
Non, innerHTML n'est pas déprécié. Il s'agit juste d'une propriété non standard (historiquement implémenté par IE) mais implémenté par la quasi totalité des navigateurs moderne.

Maintenant, il est extrèmenet dangeureux d'utiliser cette propriété car elle peut produire de nombreux problème (dans ton cas, l'insertion d'une table dans une table... aïe !)

Il est effectivement recommandé de prendre plus de temps (et plus de ligne de code) et d'utiliser les fonction du Dom pour faire la même chose : createElement, inserBefore, etc...

> http://www.yoyodesign.org/doc/w3c/dom2/core/ecma-script-binding.html
Malgré le léger hors sujet, je me permets, à la suite du message de Jep, un petit rappel sur "deprecated" (déprécié) :

Un élément HTML ou une propriété CSS, ou etc. qui est "déprécié" par une spécification du W3C reste tout à fait valide dans la spécification qui le déprécie.

C'est le cas des éléments comme <center> en HTML4.01 ou en XHTML1.0 transitional : leur usage est autorisé, mais déconseillé, et ils sont destinés à devenir "obsolètes" dans une version ultérieure du format (<center> n'est plus valide en (X)HTML strict, ni en XHTML1.1...)

Ce n'est que lorsqu'un élément ou autre est déclaré "obsolète" par une spécification qu'il devient invalidant. Par exemple, HTML4.0 a rendu obsolète et a donc interdit l'usage de LISTING, PLAINTEXT et XMP, qui avaient été d'abord dépréciés par HTML3.2 (Mais qui se souvient seulement de ces balises historiques ? Smiley biggrin )...

En revanche, les éléments, propriétés CSS ou fonctions "propriétaires" comme innerHTML, <marquee> ou le changement de couleur des barres de scroll dans IE... sont "propriétaires", et donc exclus du champ des spécifications W3C : ils ne peuvent être ni dépréciés, ni obsolètes. Ils n'existent pas, en fait, du point de vue normatif.
Modifié par Laurent Denis (30 Jul 2005 - 09:11)
Bonjour,
Il n'y à aucune raison pour que IE t'envois une erreur sur cette commande.
Ton erreur est donc ailleurs.
En revanche on ne vois pas bien ce que tu peux attendre de cette insertion,
ton élément table est vide et ne peux donc servir à rien.

La méthode standard pour l'insertion d'élément fait appel aux méthodes et propriété de l'objet node du DOM.

Tu trouveras ici Self Html objet Node et là Self Html propriété de l'objet document
de précieux exemples.

IE ayant une implémentation incomplète et parfois très surprenante du DOM, les propriétés et méthodes de l'objet Node doivent absolument être testées.

Si le recours à innerHTML et à éviter c'est quelques fois la seule solution pour satisfaire IE, raison pour laquelle Gecko à introduit le support de cette propriété car elle reste très utilisée.

JP
Modifié par jpv (31 Jul 2005 - 03:12)
Merci pour toutes vos réponses.

Pour répondre a jpv, j'insert une nouvelle table dans un tr parce que dans ma logique c'est plus facile a gerer ( j'ai des tableau de statistiques a faire, et je trouvais que cela fesait plus "rangé", aussi de cette manière je pouvais spécifier la bordure de mon tableau, le fait est que pour ce problème il y a la solution css).

Pour ce qui est de "create" je connaissais absolument pas, et si j'avais su avant que cela éxistait, faites moi confiance je me serais passé de creé quelque chose qui resterais sur la page ; )

en tout cas merci a tous, jep pour le site que je vais visiter de ce pas, laurent pour la précision, et __seb pour la découverte du create, je vous donnerais de mes nouvelles dès que possible.
j'oubliais jpv ; ) mais vu que j'en avais parlé ; ) je me suis dit que tu comprendrais, bref merci aussi a jpv et ceux que j'oublies