Bonjour...
Bon je viens poster ici parce que je tourne en rond depuis pas mal de temps et pas moyen de trouver la solution.
Mon problème est pas dur à expliquer. J'ai un tableau contenant des cellules, 1 de ces cellules s'affichent dynamiquement. En gros j'ai deux cellules dans mon code et l'une ou l'autre s'affiche selon des paramètres.
Dans un premier temps je suis donc passé par un innerHTML appelé sur le parent de ma cellule pour y mettre le contenu 1 ou le contenu 2, ça passait bien sous FF mais pas sous IE qui me pond une erreur...
J'ai donc essayé la propriété display, je mets dans mon code 2 cellule et suivant les paramètre je change le display en table-cell ou en none... ici pareil, ok sous FF et ça chie une erreur sous IE...
Je vais essayer de vous résumer mon code car il est assez long (et qui plus est je ne peux pas le donner comme il est là)...
le code php qui génère mes cellules...
le code HTML où je vais insérer l'une de mes cellules... (un simple table)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?php // ma cellule 1 $cell = "<td id=\"fields\" colspan=7>"; $cell .= "<table><tr>"; $cell .= "<td>"; $cell .= "<select name =\"select1\" id=\"select1\">"; $requete = "je recup les truc à mettre dans le select1 dans ma bdd"; while ($res=mysql_fetch_array($result)) { $cell .= "<option value=\"".trim($res["champ1"]."\" ".(trim($res["champ2"])==$test?"selected":"").">".trim($res["champ3"])/"</option>"; } $cell .= "</select>"; $cell .= "</td>"; $cell .= "<td><input type=\"text\" name=\"text1\" id=\"text1\" Onfocus=\"document.getElementById(\'text1\').className=\'focus_text\';\" Onblur=\"document.getElementById(\'nom\').className=\'blur_text\';\"></td>"; $cell .= "</tr></table>"; $cell .= "</td>"; // ma cellule 2 $cellbis = "<td id=\"fieldsbis\" colspan=7>"; // pour le reste elle est construite comme la précédente sauf que y'a 2 select (select2 et select3) et 2 champs text (text2 et text3) dans le table de ma cellule ?>
le code js pour insérer par innerHTML... ( fonction que j'appelle suite à un changement sur un autre select => onchange="check_cell(this.value);" )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ... <tr id="dynamic"> <? if(test==1 || test==3) { echo $cell; } else { echo $cellbis; } ?> </tr> ...
Je crois n'avoir rien oublié pour la partie utilisant innerHTML...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function check_cell(test) { var cell = '<?=$cell?>'; var cellbis = '<?=$cellbis?>'; if(test==1 or test==3) { document.getElementById("dynamic").innerHTML = cell; } else { document.getElementById("dynamic").innerHTML = cellbis; } }
Pour la partie display j'ai pas trop changé mon code, c'est juste que dans mon <tr> je mets mes deux cellules mais une en "display:none;", l'autre étant en "display:table-cell;" et ma fonction check_cell agit directement sur le style.display de mes cellules pour les mettre en none ou en table-cell...
Voilà... toute ces solutions fonctionnent sous FF mais pas sous IE qui pond une erreur sur soit le innerHTML soit le display... quelqu'un a une idée svp ?
EDIT: ah oui j'ai testé le appendChild aussi...
Partager