- 16, May 2024
- #1
У меня есть следующий код.
HTML:
Отлаживать: http://s.codepen.io/tomasz86/debug/KMadGj
Я ищу лучший способ показать/скрыть части ячеек таблицы.
Это всего лишь пример кода, но реальный сайт устроен таким же образом. Может ли кто-нибудь предложить какие-либо улучшения, чтобы справиться с этой ситуацией? Я пытался использовать чистые решения CSS, такие как хак с флажками или :target.
Первый не работает, поскольку скрытые элементы не являются дочерними или одноуровневыми по отношению к входному элементу.
Последнее работает, но одновременно показывать элементы из разных строк невозможно. Я бы предпочел не добавлять перед таблицей пустые элементы, такие как метки для каждого флажка и т. д.
Кстати, мои навыки работы с JavaScript очень просты, поэтому, пожалуйста, поймите: я знаю, что использование onclick не рекомендуется, поэтому, если есть лучший способ сделать это, я открыт для всех предложений.
PS На случай, если кого-то беспокоит доступность: весь скрытый контент становится видимым, когда JS отключен.
function toggle(n) {
n = document.getElementById(n), n.className.match(/\bvisible\b/) ? n.className = n.className.replace(/(?:^|\s)visible(?!\S)/g, "") : n.className += " visible"
}
Код (разметка): CSS:
div { display: none; } .visible div { display: block !important; }
Код (разметка): JS:
<table border=1> <tr id=row1> <td><label><input type=checkbox onclick=toggle('row1')></label></td> <td>cell 2<div>cell 2 details<div></td> <td>cell 3<div>cell 3 details</div></td> </tr> <tr id=row2> <td><label><input type=checkbox onclick=toggle('row2')></label></td> <td>cell 2<div>cell 2 details<div></td> <td>cell 3<div>cell 3 details</div></td> </tr> <tr id=row3> <td><label><input type=checkbox onclick=toggle('row3')></label></td> <td>cell 2<div>cell 2 details<div></td> <td>cell 3<div>cell 3 details</div></td> </tr> </table>
Код (разметка): Codepen:
Полный: http://codepen.io/tomasz86/pen/KMadGj
Отлаживать: http://s.codepen.io/tomasz86/debug/KMadGj
Я ищу лучший способ показать/скрыть части ячеек таблицы.
Это всего лишь пример кода, но реальный сайт устроен таким же образом. Может ли кто-нибудь предложить какие-либо улучшения, чтобы справиться с этой ситуацией? Я пытался использовать чистые решения CSS, такие как хак с флажками или :target.
Первый не работает, поскольку скрытые элементы не являются дочерними или одноуровневыми по отношению к входному элементу.
Последнее работает, но одновременно показывать элементы из разных строк невозможно. Я бы предпочел не добавлять перед таблицей пустые элементы, такие как метки для каждого флажка и т. д.
Кстати, мои навыки работы с JavaScript очень просты, поэтому, пожалуйста, поймите: я знаю, что использование onclick не рекомендуется, поэтому, если есть лучший способ сделать это, я открыт для всех предложений.
PS На случай, если кого-то беспокоит доступность: весь скрытый контент становится видимым, когда JS отключен.