Как показывать и прятать строки таблицы
Давным давно стояла задача, как при помощи JavaScript прятать одни строки таблицы и показывать другие. В CSS у стиля display есть значение table-row которое как раз и применяется по умолчанию к элементам типа TR, однако в Internet Explorer поддержка табличных классов практически не реализована, поэтому прямое присваивание .style.display = 'table-row' в IE ниже восьмой версии работать не будет. Не работает также и run-in. Однако, есть одно значение display которое железно работает везде - это nodisplay.
Как при помощи nodisplay показать спрятанный элемент? Просто удаляем связанный с TR класс! Т.е. у невидимых элеменов будет класс с display:nodisplay, назовем его nodisplay у видимых этого класса не будет и они останутся видимыми. Если хотим сделать видимыми невидимые элементы а невидимые видимыми то просто удаляем невидимый класс у одних и добавляем его другим. Очень просто! Как это сразу не пришло мне в голову....
пример
row 1 | row 1 |
row 2 | row 2 |
разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться
комментарии:
Атиукс, дружище, за что ты так не любишь JavaScript?
Web browsers must die!
Красивая картинка :), я ее чуть чуть уменьшил чтобы помещалась на странице. Возможно ты и прав, я тоже не люблю костыли, предпочитаю использовать что то типа "наименьшего общего знаменателя" - т.е. использовать только те свойства которые все браузеры поддерживают более или менее одинаково. Это трудно, но это одновременно и интересно. Может быть когда нибудь настанет рай и все браузеры будут подчиняться стандартам, но мэн, стандарты тоже постоянно развиваются - этот путь бесконечен всегда будут браузеры не успевающие за развитием стандартов.
Дело в том, что не я решаю какие браузеры поддерживать а какие нет - я просто реализую пожелания своих заказчиков, если я буду поддерживать только те браузеры какие мне нравится за такую работу мне не заплатят - а значит моей семье нечего будет кушать, поэтому я стараюсь решать поставленные задачи так чтобы было интересно и мне и заказчику :)