innerHTML

Le
Mihamina (R12y) Rakotomandimby
Bonjour à tous.

J'ai découvert un "truc" cette nuit: faire un innerHTML d'un <table> n'est
pas conforme.

Prenons un tableau:
http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/m.js?rev

Une fonction pour afficher ce tableau:
http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/affichage.js?rev

Et le code HTML:
http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/index.html?rev

Dans cet état là, le code fonctionne sous Firefox2 (enfin Iceweasel) mais
Konqueror me jette avec un "DOM Exception 7"

Par contre, si comme indiqué:
http://infogerance.asso-polyvalente.fr/trac/changeset/17
Je fais un innerHTML d'un <div>, tout se passe bien.

De quels éléments (portent-ils un "nom" particulier?) ne peut-on pas
modifier le innerHTML?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ASM
Le #746229
Bonjour à tous.

J'ai découvert un "truc" cette nuit: faire un innerHTML d'un <table> n'est
pas conforme.


tout dépend de ...

Prenons un tableau:
http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/m.js?rev

Une fonction pour afficher ce tableau:
http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/affichage.js?rev


J'aimerais bien savoir ce que représente 't' dans :
var largeur=t[0].length;

est-ce bien
t=document.getElementById('monTable').getElementsByTagName('TBODY')[0].rows;
?

Et le code HTML:
http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/index.html?rev


où il est le code html ?

Dans cet état là, le code fonctionne sous Firefox2 (enfin... Iceweasel) mais
Konqueror me jette avec un "DOM Exception 7"


Normalement innérer le html d'un table ça fonctionne bien.
Faut juste penser à échapper les /

essaie avec :
resultat += "</td>";
au lieu de :
resultat += "</td>";
et pareil pour "</th>" et "</tr>" ainsi que "</table>"

d'ailleurs ça m'étonne que FF ne trouve pas à redire.

Et le plus simple est encore de zapper ces balises fermantes qui peuvent
être facultatives


Par contre, si comme indiqué:
http://infogerance.asso-polyvalente.fr/trac/changeset/17
Je fais un innerHTML d'un <div>, tout se passe bien.


Là j'ai rien compris à ce qu'on me veut, d'autant qu'on n'y parle pas de
DIVs ...

Pense à changer :
<script language="JavaScript">
par :
<script type="text/javascript">

et pendant que tu y es essaie d'utiliser un doctype
et qu'il soit valide.

De quels éléments (portent-ils un "nom" particulier?) ne peut-on pas
modifier le innerHTML?


Ha Ha ! les dangers du innerHTML ... ici :
http://stephane.moriaux.perso.orange.fr/truc/innerHTML_danger

(où l'on voit que c'est OK pour un table mais pas pour un input)

--
Stephane Moriaux et son (moins) vieux Mac

Mihamina (R12y) Rakotomandimby
Le #746228
ASM -
J'ai découvert un "truc" cette nuit: faire un innerHTML d'un <table>
n'est pas conforme.


tout dépend de ...

Prenons un tableau:

http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/m.js?rev



Une fonction pour afficher ce tableau:

http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/affichage.js?rev



J'aimerais bien savoir ce que représente 't' dans :
var largeur=t[0].length;


Dans t, il y a:
http://infogerance.asso-polyvalente.fr/trac/browser/tri_tableau/m.js

Et le code HTML:
où il est le code html ?



As tu suivi le lien?

Et le plus simple est encore de zapper ces balises fermantes qui peuvent
être facultatives


Arretes...

Par contre, si comme indiqué:
http://infogerance.asso-polyvalente.fr/trac/changeset/17
Je fais un innerHTML d'un <div>, tout se passe bien.
Là j'ai rien compris à ce qu'on me veut, d'autant qu'on n'y parle pas de

DIVs ...


Je t'explique:
Plutot que de modifier le innerHTML d'un table, j'ai "encapsulé" le table
dans un div, et c'est le innerHTML du div que je modifie en table.

J'aurais préféré le premier cas.


Pense à changer :
<script language="JavaScript">
par :
<script type="text/javascript">

et pendant que tu y es essaie d'utiliser un doctype
et qu'il soit valide.

De quels éléments (portent-ils un "nom" particulier?) ne peut-on pas
modifier le innerHTML?


Ha Ha ! les dangers du innerHTML ... ici :
http://stephane.moriaux.perso.orange.fr/truc/innerHTML_danger



ASM
Le #746227

Je t'explique:
Plutot que de modifier le innerHTML d'un table, j'ai "encapsulé" le table
dans un div, et c'est le innerHTML du div que je modifie en table.

J'aurais préféré le premier cas.


Chez moi le 1er cas fonctionne partout excepté avec Mon IE5 Mac qui ne
comprend rien à ce 't'
et mon Opera 9 qui n'a pas l'air de s'interreser à ces <td></td></tr>

fichier 'affichage.js' :
function contenu_tableau(t)
{
// alert('tabl long = '+t.length);
var resultat = "<tbody>";
var largeur = t[0].length;
for(var l=0; l < t.length; l++)
{
resultat += "n<tr>";
resultat += "<td>";
resultat += "ligne "+ l ;
resultat += "</td>";
for(var c=0; c < largeur; c++)
{
resultat += "<td>";
resultat += t[l][c];
resultat += "</td>";
}
resultat += "</tr>";
}
resultat += "</tbody>";
//alert(resultat);
return resultat;
}

fichier 'index.htm' :
<html>
<head>
<title></title>
<meta content="">
<style></style>
<script type="text/javascript">
onload = function() {
document.getElementById('stats_pays').innerHTML=contenu_tableau(t);
};
</script>
</head>
<body>
<table style="font-family: sans-serif; background: grey;"
id="stats_pays" border=1 cellspacing=2>
</table>
</body>
</html>


--
Stephane Moriaux et son (moins) vieux Mac

Rakotomandimby (R12y) Mihamina
Le #746226
ASM -
Plutot que de modifier le innerHTML d'un table, j'ai "encapsulé" le
table dans un div, et c'est le innerHTML du div que je modifie en table.
J'aurais préféré le premier cas.
Chez moi le 1er cas fonctionne partout excepté avec Mon IE5 Mac qui ne



http://dev.rubyonrails.org/ticket/8182
C'est un "bug connu".
Bon du coup, moi je dois faire autrement pour afficher un tableau.

--
"C'est très facile d'avoir des idées de partage quand on n'a rien."
Patrice KARATCHENTZEFF,
à propos de certaines idées "de gauche".


ASM
Le #746225
ASM -
Plutot que de modifier le innerHTML d'un table, j'ai "encapsulé" le
table dans un div, et c'est le innerHTML du div que je modifie en table.
J'aurais préféré le premier cas.
Chez moi le 1er cas fonctionne partout excepté avec Mon IE5 Mac qui ne



http://dev.rubyonrails.org/ticket/8182
C'est un "bug connu".


ce qui n'empêche pas mon IE de ne rien comprendre à :

t.push(new Array(8894,31981,31960));

Bon du coup, moi je dois faire autrement pour afficher un tableau.


J'utilise le moins possible innerHTML, cependant il me semble l'avoir vu
utiliser pour des tables et, en effet, c'est pour insérer des tables
complets (y compris les balises table).


--
Stephane Moriaux et son (moins) vieux Mac



Olivier Miakinen
Le #746224

Bon du coup, moi je dois faire autrement pour afficher un tableau.


J'utilise le moins possible innerHTML [...]


Tout pareil. Je m'en sers pour insérer du simple texte parce que là
c'est un peu trop verbeux à mon goût avec les fonctions du DOM (et
que innerHTML marche bien pour du texte), mais sinon j'utilise plutôt
appendChild(), cloneNode() et ainsi de suite.


Publicité
Poster une réponse
Anonyme