Можно таблицами можно дивами. В примере было удобнее использовать таблицы, да и для объяснения они проще.
В общем так:
Code
<table class="news">
<tr>
<!-- Эта ячейка таблицы будет кнопкой, которая включает/отключает отображение второй ячейки -->
<td class="newsheader" onclick="if (news.style.display=='block') {news.style.display='none'} else {news.style.display='block'}">
Нажмите для открытия спойлера
</td>
</tr>
<tr>
<!-- А это само скрываемое поле -->
<td class="newstext" id="news" style="display: block">
Текст под катом
</td>
</table>
В даном случае событие
Code
onclick="if (news.style.display=='block') {news.style.display='none'} else {news.style.display='block'}"
Первой строки таблицы, как можно видеть, управляет свойством display второй строки.
Текст вытянут из реального проекта и многое убрано, атк что если не получиться такое организовать отписывайся - напишу отдельно рабочий вариант.