При выборе чекбокса должна под ним отображаться таблица с другими чекбоксами

Yura

Новичок
При выборе чекбокса должна под ним отображаться таблица с другими чекбоксами

Есть список категорий (разделов) каталога, которые выводятся из таблицы MYSQL. Пользователю при добавлении компании в каталог предоставляется возможность выбрать как категорию верхнего уровня (одну или более), так и одну или несколько подкатегорий (всего 2 уровня). По умолчанию для добавления компании октрывается страница с формой добавления, где предоставлен и список этих категорий только верхнего уровня; возле названия категории - чекбокс. При выборе этого чекбокса должна под этим чекбоксом с названием категории отображаться таблица со списком подкатегорий этой категории.
Проблемы такие:
1. Если я выбираю, например, одну из категорий, а потом одну из последующих, то все происходит нормально. Если наоборот, сначала какую-нибудь из последних, а потом одну из предыдущих, то с последней все нормально, а с предыдущими иногда ничего не работает (выбираю чекбокс, и никакой реакции), а иногда все нормально.
2. Если я выбрал один или более чекбоксов, и таблицы подкатегорий отобразились; и если я хочу скрыть эту таблицу, сняв выделение чекбокса, то в некоторых случаях ничего не происходит, а в некоторых таблица скрывается.
Что я деолаю не так? Как нужно сделать, чтобы все работало четко?
Фот чего у меня есть в форме:
$resultCategory = mysql_query("select * from tbl_category where id_parent=0 ....
for ($i=0; $i<mysql_num_rows($resultCategory); $i++)
{
$chi="ch".$i;
$rowCat = mysql_fetch_array($resultCategory);
echo "<p><input type='checkbox' name='".$chi."' value='".$rowCat['id_category']."' onclick=\"swapTables();\">&nbsp;".$rowCat['name_category'];

$resultSubCategory = mysql_query("select * from tbl_category where id_parent='$rowCat[id_category]'");


if (mysql_num_rows($resultSubCategory) !== 0)
{
$frm_i="frm_".$rowCat['id_category'];
echo "<table border=1 cellpadding=0 cellspacing=0 width=100% id='".$frm_i."' style=\"display:none\">";


и т.д.


Вот сама функция javascript:

function swapTables()
{
var type=event.srcElement.value;
var elem=f.elements;
var l=elem.length;

for(i=0; i<l; i++)
{
if (f.elements.checked==true) {
document.getElementById('frm_'+type).style.display = type==f.elements.value ? 'block' : 'none';
}
}
}

-~{}~ 11.04.07 17:58:



Изменил функцию таким образом: function swapTables()
{
var type=event.srcElement.value;
var elem=f.elements;
var l=elem.length;

for(i=0; i<l; i++)
{
if (f.elements.checked==true) {

document.getElementById('frm_'+type).style.display = type==f.elements.value ? 'block' : 'none';

}
else if (f.elements.checked==false) {

document.getElementById('frm_'+type).style.display = type==f.elements.value ? 'none' : 'block';

}

}
}

Теперь таблицы отображает как надо, а скрывать не хочет
 
Сверху