Zmiana widocznosci wiersza tabeli

w dziale Opera
gms_ napisał(a):

elo ;-)

Mala wprawka z Javascripta/CSS i od razu porazka :>

Testowa strona (bzdurny przyklad ale obrazuje problem):

<html>
<head>
<script>
function sh(hide)
{
var row = document.getElementById("2");
row.style.display = hide ? "none" : "block";
}
</script>
</head>

<body>

<table border="1">
<tr id="1">
<td>1-1</td>
<td>1-2</td>
</tr>
<tr id="2">
<td>2-1</td>
<td>2-2</td>
</tr>
</table>
<a href="javascript:sh(true);">Hide</a>
<a href="javascript:sh(false);">Show</a>
</body>
</html>

Mamy dwa wiersze tabeli, i 2 linki, z ktorych pierwszy ukrywa drugi wiersz tabeli, a drugi pokazuje go z powrotem. Problem jest taki ze na Operze (7.51 w domu, 7.54 w pracy) po schowaniu i ponownym wyswietleniu wiersza tabela wyglada cokolwiek dziwnie, jakby Opera miala problemy z przeliczeniem liczby komorek w wierszu. Na IE to wyglada sensownie.

Jakies pomysly, jak to obejsc?

Pozdrawiam, g.

PragmaInline napisał(a):

@gms_,


ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").


pi

edit: Jednak problem jest tak czy inaczej. Firefox zachowuje się identycznie.

gms_ napisał(a):

Thx, dobrze wiedziec :> Tak czy inaczej problem jest ten sam...

Normalnie nie tykam sie html/css/js, ale teraz chcialem oprogramowac pewien komponent takze po stronie klienta, i takie zonki wychodza...

Edit: pewnym wyjsciem jest chyba uzycie visibility zamiast display, ale wtedy zostaje puste miejsce, tam gdzie byl wiersz... Lepiej, ale ciagle nie to co bym chcial ;-)

Pozdrawiam, g.

Nixer napisał(a):

Hm, a może pokombinuj tak:

<a href="#" onclick="document.getElementById('idelementu').style.display='none'">ukryj</a></p>
<a href="#" onclick="document.getElementById('idelementu').style.display='block'">pokaż</a></p>

gms_ napisał(a):

Eee, no przeciez to zasadniczo to samo co przedtem, tyle ze nie opakowane w funkcje ;-). Tabelka tak samo zlosliwie udaje, ze nie wie, ile ma komorek i gdzie :>.

Zajec napisał(a):

Opera, Gecko dobrze robią.
I przyczyna nie tkwi w przelicznaiu komórek.

Po prostu tabela wariuje w momencie, gdy... rozkazujesz jedemu jej wierszowi zamienić się z wiersza w blok.


[edited]
http://podolszyna.com/test

Przypisanie display = "" powoduje, że przyjmuje on domyślną wartość dla danego elementu. Jeśli chcesz, możesz sprawdzić jaka jest ta domyślna wartość i to ją przypisywać. Efekt ten sam.

gms_ napisał(a):

yes Big thx! :-)