Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > style.display


Автор: sharq 14.10.2005, 11:06
Нужно скрывать и открывать таблицу. В IE все работает валидно, в Mozilla Firefox типа работает, но некорректно, разрастается таблица...
Вот код.

Код

<html>
    <head>
        <title>Test</title>
    </head>
<body>
    <script type="text/javascript">
        function ShowHide(tr) {
            document.getElementById(tr).style.display = (document.getElementById(tr).style.display == 'none') ? 'block' : 'none';
        }
    </script>
        <table border="1">
            <tr onClick="ShowHide('tree1');">
                <td width="50">1</td>
                <td width="200">text</td>
            </tr>
            <tr id="tree1" style="display: none;">
                <td colspan="2">
                    <table border=1>
                        <tr>
                            <td width=50>1.1</td>
                            <td width=200>text 1.1</td>
                        </tr>
                        <tr>
                            <td width=50>1.2</td>
                            <td width=200>text 1.2</td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
</body>
</html>


Почему так происходит в Firefox, это мой косяк или нет? smile

Автор: sergejzr 14.10.2005, 11:35
Нифига себе.... по ходу ты баг нашёл. Я кстати тоже замечал некорректную работу display.. Но такого!...

Автор: Zeroglif 14.10.2005, 12:18
sharq

Эт не твой косяк, он общий. smile

Вместо dispaly:"block" поставь display:"", элемент встанет в дефолтный ему display.

Автор: Sardar 14.10.2005, 12:30
Читаем это: http://www.w3.org/TR/CSS21/tables.html
И врубаемся что display у таблицы не block, мозилла как всегда ведёт себя корректно согласно стандартам, а ИЕ нет.

Автор: sharq 15.10.2005, 11:01
Sardar спасибо за ссылку, полезно.)

Для корректной работы придется определять тип браузера... жаль, что нет единого значения.

smile

Автор: sergejzr 15.10.2005, 13:30
sharq, а я бы на твоём месте обернул табличку в div и скрывал уже его smile

Код

      <tr >
                <td colspan="2">
<div  id="tree1" style="display: none;"> 
                    <table border=1>
                        <tr>
                            <td width=50>1.1</td>
                            <td width=200>text 1.1</td>
                        </tr>
                        <tr>
                            <td width=50>1.2</td>
                            <td width=200>text 1.2</td>
                        </tr>
                    </table>
</div>
                </td>
            </tr>

Конечно один ряд останется, но если всё красиво оформить, то даже ничего может получиться..

Автор: sharq 15.10.2005, 14:32
К сожалению, вариант с div'ом не подходит...

Все очень просто решилось, вместо 'block' или 'table-row' нужно писать ''.
И все работает, причем везде. smile

smile

Автор: Zeroglif 15.10.2005, 18:52
Цитата(sharq @ 15.10.2005, 14:32)
Все очень просто решилось, вместо 'block' или 'table-row' нужно писать ''.
И все работает, причем везде.

Я ж говорил, лучшего кросс-браузерного решения просто нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)