Bonjour,
Je me tourne vers vous après des heures de recherche car je ne vois vraiment pas d'où ce bug peut venir à part peut-être du navigateur.
Le code suivant permet dans un tableau d'avoir une largeur toujours fixe pour certaines colonnes, mais qui en cliquant sur les données qui ont été tronquées, permet d'avoir l'intégralité. Je l'ai simplifié au maximum, il manque bien entendu toute la partie récupération des données et mise en forme.
Chaque donnée tronquée est encapsulée dans un div et mise en absolue par rapport à sa cellule. Cela marche parfaitement bien pour deux cellule qui ne se "suivent" pas mais dès qu'elles le font, la 2e se met en absolu par rapport à la 1er.
Le plus rageant ce que le bug n'apparaît pas sous IE7 (pas testé sous IE8) mais sous Firefox et Opera.
La variable complet est uniquement là pour éviter que la colonne change de taille (j'utilise donc une police d'écriture à chasse fixe comme courier).
Voilà en vous remerciant si vous avez une idée d'où j'ai pu merder, car j'ai beau tourner le problème dans tous les sens, je ne vois pas.
Modifié par casper357 (30 Aug 2010 - 15:45)
Je me tourne vers vous après des heures de recherche car je ne vois vraiment pas d'où ce bug peut venir à part peut-être du navigateur.
Le code suivant permet dans un tableau d'avoir une largeur toujours fixe pour certaines colonnes, mais qui en cliquant sur les données qui ont été tronquées, permet d'avoir l'intégralité. Je l'ai simplifié au maximum, il manque bien entendu toute la partie récupération des données et mise en forme.
Chaque donnée tronquée est encapsulée dans un div et mise en absolue par rapport à sa cellule. Cela marche parfaitement bien pour deux cellule qui ne se "suivent" pas mais dès qu'elles le font, la 2e se met en absolu par rapport à la 1er.
Le plus rageant ce que le bug n'apparaît pas sous IE7 (pas testé sous IE8) mais sous Firefox et Opera.
<html>
<head>
<script type="text/javascript">
function show(idd) {
var complet = "";
for (var i = 0;i < 10;i++) { complet += " "; }
document.getElementById("d" + idd).style.display = "block";
document.getElementById("d" + idd).style.position = "relative";
document.getElementById("d" + idd).innerHTML = complet + "<div><a href=\"javascript:hide(" + idd + ")\">abcdefghijklmnopqrst</a></div>";
}
function hide(idd) {
document.getElementById("d" + idd).style.display = "";
document.getElementById("d" + idd).style.position = "";
document.getElementById("d" + idd).innerHTML = "<a href=\"javascript:show(" + idd + ")\">abcdefgh..</a>";
}
</script>
<style type="text/css">
div {
background-color: white;
white-space: nowrap;
position: absolute;
left: 1px;
top: 1px
}
</style>
</head>
<body>
<table border=1 cellspacing=2>
<tr>
<td id="d0"><a href="javascript:show(0)">abcdefgh..</a></td>
<td>abcdefghijk</td>
<td id="d1"><a href="javascript:show(1)">abcdefgh..</a></td>
<td>abcdefghijk</td>
</tr>
<tr>
<td>abcdefghijk</td>
<td id="d2"><a href="javascript:show(2)">abcdefgh..</a></td>
<td id="d3"><a href="javascript:show(3)">abcdefgh..</a></td>
<td>abcdefghijk</td>
</tr>
</table>
</body>
</html>
La variable complet est uniquement là pour éviter que la colonne change de taille (j'utilise donc une police d'écriture à chasse fixe comme courier).
Voilà en vous remerciant si vous avez une idée d'où j'ai pu merder, car j'ai beau tourner le problème dans tous les sens, je ne vois pas.
Modifié par casper357 (30 Aug 2010 - 15:45)