Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1280 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  document.getElementById ne veut pas fonctionner sous IE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

document.getElementById ne veut pas fonctionner sous IE

n°2121408
Aiexis
PC hanté
Posté le 14-01-2012 à 22:59:06  profilanswer
 

Bonsoir,
je deviens FOU  :fou:  :fou:  
 
Est-ce qu'une âme charitable pourrait m'expliquer pourquoi ce bout de code ne fonctionne pas sous IE ? (marche très bien sous chrome/firefox)
 

Code :
  1. <div id="test"></div>
  2. <script type="text/javascript">
  3. document.getElementById("test" ).innerHTML = 'blabla';
  4. </script>


 
J'ai fait ça des millions de fois, ça a toujours fonctionné, j'ai des sites qui tournent avec ce genre de chose, aucun problème, mais ça, ça veut pas  :heink:  :heink:  :heink:  
J'obtiens cette erreur, sous IE 9
Impossible de définir la valeur de la propriété « innerHTML » : objet null ou non défini  
 
Et ta mémé elle est pas définie ?
Bon sang je suis au bord de la crise de nerf là !
 
merci de me sauver la vie avant que je me jette :D


---------------
"L'espoir meurt en dernier", proverbe allemand
mood
Publicité
Posté le 14-01-2012 à 22:59:06  profilanswer
 

n°2121420
Pc_eXPert
Posté le 15-01-2012 à 05:37:02  profilanswer
 

Si tu englobes ton texte avec <div> ça fait quoi ? Apparemment IE9 vérifie la validité de l'HTML inséré avec innerHTML. Ça n'explique pas qu'il ne soit pas défini, par contre. Et puis innerHTML est une propriété bien de chez eux à Microsoft, la moindre des choses serait qu'ils l'implémentent correctement.

n°2121425
Aiexis
PC hanté
Posté le 15-01-2012 à 09:12:42  profilanswer
 

Je comprends pas ce que tu veux dire par "englober mon texte avec <div>" :(
 
Finalement j'ai trouvé une solution de remplacement. J'ai mis un <input id="test"> et  
document.getElementById("test" ).value = 'blabla';
 
Avec un peu de css ça ressemble à ce que je voulais, mais bon, c'est encore une fois du bricolage grâce à microsoft :pfff:

n°2121444
raskt
Posté le 15-01-2012 à 15:32:54  profilanswer
 

Ajoute une balise <body>, ça peut aider.

n°2121445
Aiexis
PC hanté
Posté le 15-01-2012 à 15:39:59  profilanswer
 

Marche pas, avec ou sans body, en essayant tous les doctypes de l'univers, etc...

n°2121448
gatsu35
Blablaté par Harko
Posté le 15-01-2012 à 16:04:56  profilanswer
 

on peut voir le code de toute ta page, car j'ai un doute là


---------------
Blablaté par Harko
n°2121449
Pc_eXPert
Posté le 15-01-2012 à 16:08:39  profilanswer
 

Aiexis a écrit :

Je comprends pas ce que tu veux dire par "englober mon texte avec <div>" :(
 
Finalement j'ai trouvé une solution de remplacement. J'ai mis un <input id="test"> et  
document.getElementById("test" ).value = 'blabla';
 
Avec un peu de css ça ressemble à ce que je voulais, mais bon, c'est encore une fois du bricolage grâce à microsoft :pfff:


"<div>blabla</div>"
C'est ça que je voulais dire

n°2121450
Aiexis
PC hanté
Posté le 15-01-2012 à 16:11:19  profilanswer
 

Pc_eXPert a écrit :


"<div>blabla</div>"
C'est ça que je voulais dire


Toujours rien sur IE...
la preuve en image :o
http://www.pronotennis.org/test.php
 
A moins que ça soit mon IE qui soit buggué ?  :??:  
Je me méfie de tout maintenant...

n°2121453
raskt
Posté le 15-01-2012 à 16:19:10  profilanswer
 

Le HTML est en mode quirks à cause du manque de DTD.
Je crois qu'en elevant l'attribut type ça doit passer.

 
 
Ca marche ça non :

Code :
  1. <html>
  2. <body>
  3. <div id="test"></div>
  4. <script type="text/javascript">
  5. document.getElementById("test" ).innerHTML = '<div>blabla</div>';
  6. </script>
  7. </body>
  8. </html>

Message cité 1 fois
Message édité par raskt le 15-01-2012 à 16:24:12
n°2121455
Aiexis
PC hanté
Posté le 15-01-2012 à 16:26:07  profilanswer
 

raskt a écrit :

Le HTML est en mode quirks à cause du manque de DTD.
Je crois qu'en elevant l'attribut type ça doit passer.

 
 
Ca marche ça non :

Code :
  1. <html>
  2. <body>
  3. <div id="test"></div>
  4. <script type="text/javascript">
  5. document.getElementById("test" ).innerHTML = '<div>blabla</div>';
  6. </script>
  7. </body>
  8. </html>



 
Ah oui, ça, ça marche...
 
alors que ça

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <script type="text/javascript">
  6. document.getElementById("test" ).innerHTML = '<div>blabla</div>';
  7. </script>
  8. </head>
  9. <body>
  10. <div id="test"></div>
  11. </body>
  12. </html>


ça marche pas :lol:
 
J'aime bien débugguer en faisant du ligne par ligne pour trouver là où ça coince (joke)

mood
Publicité
Posté le 15-01-2012 à 16:26:07  profilanswer
 

n°2121456
raskt
Posté le 15-01-2012 à 16:28:51  profilanswer
 

Si tu utilise un handler pour exécuter du code après que le DOM soit 'ready' (par exemple via jquery), ça devrait mieux marcher...
ça par exemple ca a l'air sympa: http://code.google.com/p/domready/

Message cité 1 fois
Message édité par raskt le 15-01-2012 à 16:30:12
n°2121458
Aiexis
PC hanté
Posté le 15-01-2012 à 16:33:24  profilanswer
 

raskt a écrit :

Si tu utilise un handler pour exécuter du code après que le DOM soit 'ready' (par exemple via jquery), ça devrait mieux marcher...
ça par exemple ca a l'air sympa: http://code.google.com/p/domready/


Non je vais pas utiliser un AK47 pour écraser une mouche :D
effectivement il faut, à la fois que le div soit avant le script, ce qui est logique, et qu'il y ait les balises html et body.
Dans mes innombrables tests j'avais jamais dû réunir ces 2 conditions, ou alors il y avait un 3ème truc qui bloquait.
Merci bien en tout cas! ;)

n°2121459
raskt
Posté le 15-01-2012 à 16:34:55  profilanswer
 

Pour l'archivage:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5.         <script src="domready.js" type="text/javascript"></script>
  6.         <script type="text/javascript">
  7.                 DomReady.ready(function() {
  8.                     document.getElementById("test" ).innerHTML = '<div>blabla</div>';
  9.                 });
  10.         </script>
  11. </head>
  12. <body>
  13. <div id="test"></div>
  14. </body>
  15. </html>

n°2121461
Aiexis
PC hanté
Posté le 15-01-2012 à 16:38:49  profilanswer
 

Et le lien de téléchargement de domready qui peut effectivement être utile:
http://domready.googlecode.com/files/domready.js

 

PS: par contre les div entourant "blabla" ne sont pas utiles.


Message édité par Aiexis le 15-01-2012 à 16:39:29

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  document.getElementById ne veut pas fonctionner sous IE

 

Sujets relatifs
javascript FONCTION EVENT SOUS IE ET FIREFOXMacro pour copier le contenu d'un document excel vers un autre
Mise a jour d'un site a partir d'un document .txt ?getElementById & FindControl
Liens hypertextes sont inactif sur mozilla mais fonctionnent sur IEProblème image d'un header qui se décale sous IE
Problème avec firefox et IEIE ne sait pas ouvrir les PNG ?
Macro pour défusionner un document obtenu par publipostageGestion de document Word via macro VBA excel
Plus de sujets relatifs à : document.getElementById ne veut pas fonctionner sous IE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR