JS. Не видит объект
Здравствуйте.
Надеюсь правильно озаглавил тему. Итак, проблема такова. Есть функция, которая должна менять при клике фоновый цвет нужного tbody, а фоновый цвет всех остальных tbody делать прозрачными/белыми/неважно. вот функция:
function show_products_marka(nid,nidmarka,m)
{
for (i = 0; i < m; i++)
{
nbody = 'tbody_' + nid + '_' + i;
if (i == nidmarka)
{
document.getElementById(nbody).style.backgroundColor = "#FFC4C4";
}
else
{
document.getElementById(nbody).style.backgroundColor = "#ffffff";
}
}
}
что самое интересное, вот этот кусок работает:
if (i == nidmarka)
{
document.getElementById(nbody).style.backgroundColor = "#FFC4C4";
}
, а вот этот нет document.getElementById(nbody).style.backgroundColor = "#ffffff"; И еще один момент. Если принудительно на условие иначе прописать не переменную, а конкретное значение, то всё сработает, т.е.
document.getElementById('tbody_36_68').style.backgroundColor = "#ffffff";
спасибо.. |
Цитата:
|
Цитата:
|
Значит, элемента с id=nbody не существует. Смотрите, на каком nbody оно падает и думайте, почему оно формирует такую строку.
|
Цитата:
если просто алертом выводить nbody, то всё путём, будут выданы все значения!!!
else
{
alert(nbody);
}
НО!, стоит изменить код на следующий
else
{
alert(document.getElementById(nbody).style.backgroundColor);
}
и всё! всё стопарится на первом же else. Да я уже голову сломал в догадках почему для if всё путём, а для else - не пашет. |
Возможно стоит проверить уникальность id в пределах страницы.
|
Вставьте внуть else
if(document.getElementById(nbody) == null) alert(nbody + ' doesnt exist'); |
Цитата:
tbody_01_0 doesnt exist ... tbody_36_68 doesnt exist ну т.е. все tbody кроме выбранного. а почему оно нулл ?! |
Цитата:
совпадение исключено, 100%. |
Цитата:
|
Цитата:
|
Каком условии?
|
Цитата:
|
Если бы ошибка выдавалась на if и на else, тогда - да, надо думать и искать. Но ведь на if - срабатывает и всё видит, и всё понимает, и всё правильно делает.
|
Похоже, нужен весь код. По этому фрагменту непонятно, что не так. Можно только гадать. Например: невыбранный элемент не имеет идентификатора или он присвоен неверно.
|
Цитата:
<tbody style="background: #008000;" id='tbody_01_1'> <tbody style="background: #008000;" id='tbody_01_2'> <tbody style="background: #008000;" id='tbody_11_3'> ... <tbody style="background: #008000;" id='tbody_36_68'> вот код, который присваивает идентификаторы:
for ($marka = 0; $marka < $m; $marka++)
{
if ($cat2_tmp[$marka]["razdel"] == $cat1_tmp[$i]["id"] && $cat2_tmp[$marka]["q"] != 0)
{
echo "<tbody style=\"background: #008000;\" id='tbody_".$cat2_tmp[$marka]["razdel"]."_".$cat2_tmp[$marka]["idmarka"]."'>\n";
for ($j = 0; $j < $ind; $j++)
{
if ($catalog[$j]["marka"] == $cat2_tmp[$marka]["name"])
{
if ($catalog[$j]["id"] != '')
{
if ($catalog[$j]["id_razdel"] == $cat1_tmp[$i]["id"])
{
echo "<tr>\n";
echo "<td align='center'>" . $catalog[$j]["id"] . "</td>";
echo "<td>" . $catalog[$j]["name"] . "</td>";
echo "<td align='center'>" . $catalog[$j]["firstprice"] . "</td>";
echo "<td align='center'>" . $catalog[$j]["ostatok"] . "</td>";
if ($cid == 4)
{
echo "<td align='center'>" . $catalog[$j]["price6"] . "</td>";
}
if ($cid == 3)
{
echo "<td align='center'>" . $catalog[$j]["price5"] . "</td>";
}
if ($cid == 2)
{
echo "<td align='center'>" . $catalog[$j]["price4"] . "</td>";
}
if ($cid == 1)
{
echo "<td align='center'>" . $catalog[$j]["price3"] . "</td>";
}
if ($cid == 0)
{
echo "<td align='center'>" . $catalog[$j]["price2"] . "</td>";
}
echo "<td align='center'>" . $catalog[$j]["garanty"] . "</td>\n";
echo "</tr>\n";
}
}
}
}
echo "</tbody>\n";
}
}
|
Цитата:
|
твою мать.
дело в кавычках. жээээээсть. прость жэсть. |
Цитата:
выписываем все ИД, и расписываем весь цикл на бумаге и проверяем пошагово. ну и, само собой, исходный код сформированной страницы смотрим. |
echo "<tbody style=\"background: #008000;\" id='tbody_".$cat2_tmp[$marka]["razdel"]."_".$cat2_tmp[$marka]["idmarka"]."'>\n"; заменил на echo "<tbody style=\"background: #008000;\" id=\"tbody_".$cat2_tmp[$marka]["razdel"]."_".$cat2_tmp[$marka]["idmarka"]."\">\n"; и всё работает.. всем спасибо...за то что не остались равнодушными... |
извиняюсь за...междометия :)
просто слегка на эмоциях был :) |
| Часовой пояс GMT +3, время: 04:53. |