L'affichage d'une ligne cachée via css ne marche pas avec ie

L'affichage d'une ligne cachée via css ne marche pas avec ie - HTML/CSS - Programmation

Marsh Posté le 24-01-2006 à 23:07:10    

'soir [:dawa]
Je suis en train de bosser sur une page web, et j'ai un petit pb :
J'ai un tableau avec 2 lignes. La seconde est cachée via <tr style="display: none">. Sur la premiere ligne, j'ai un lien vers un javascript qui vérifie le style actuel, et le passe en table-row, afin d'afficher la ligne en question, ou en none, pour la cacher.
Tout marche bien avec firefox :), mais ie n'aime pas mon javascript :/ Une idée ? :hello:  
J'ai mis le fichier en question ici : http://fredfrom75.free.fr/hfr/test-div.php
 
La page web :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript" src="js/showhide.js" type="text/javascript"></script>
<title>Untitled Document</title>
</head>
avant
<table border="1">
<tr id="titre-1"><td>toto switch <img src="images/assistance.gif" onclick="showhide('switch-1');"/></td></tr>
<tr id="switch-1" style="display: none"><td>ligne 2!</td></tr>
</table>
après
<body>
</body>
</html>


 
Le javascript :
 

function showhide(id)
{
 var d = document.getElementById(id);
 
 if (d) {
  if(d.style.display=='table-row') {
   d.style.display='none';
  }
  else {
   d.style.display='table-row';
  }
 }    
}


Rien de bien compliqué, quoi :o


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 24-01-2006 à 23:07:10   

Reply

Marsh Posté le 25-01-2006 à 11:56:04    

Et oui, IE le trés parfait ne se rend pas forcément compte qu'on modifie la page ou les infos d'affichage d'un élément de la page.
Pour le forcer à recalculer l'affichage d'un élément, le plus simple, c'est de mettre l'InnerHTML de l'élément parent dans l'InnerHTML de l'élément parent.
C'est crade, mais ca a le mérite de marcher.

Reply

Marsh Posté le 25-01-2006 à 15:09:39    

omega2 a écrit :

Et oui, IE le trés parfait ne se rend pas forcément compte qu'on modifie la page ou les infos d'affichage d'un élément de la page.
Pour le forcer à recalculer l'affichage d'un élément, le plus simple, c'est de mettre l'InnerHTML de l'élément parent dans l'InnerHTML de l'élément parent.
C'est crade, mais ca a le mérite de marcher.


 
tu as fait une erreur, ou c'est moi qui ait du mal à comprendre :D ?


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 25-01-2006 à 15:14:17    

non pas d'erreur, lors du changement (dans ce cas à l'identique) de l'innerHTML, IE "rafraichit"(ou recalcule comme l'a dit omega2) son affichage de l'objet

Reply

Marsh Posté le 25-01-2006 à 15:57:18    

je vois pas trop à quoi correspond l'innerhtml ? la partie que j'affiche ou je cache ?


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 25-01-2006 à 16:16:53    

innerHTML, c'est le code html de tout ce qui est situé entre la fin de la balise d'ouverture et le début de la balise de fermeture d'un élément. En jouant avec celui de l'élément parent de celui qu'on modifie, on est sur que IE prendra en compte la modification qu'on a faite.

Reply

Marsh Posté le 25-01-2006 à 16:33:15    

J'ai compris le principe ! Merci :)


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 25-01-2006 à 17:49:22    

freds45 a écrit :

J'ai compris le principe ! Merci :)


Et toi là, je t'ai vu  :o , retourne dans la cat WSR et utilise dreamweaver en Wysiwyg :o
 

Spoiler :


:D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed