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, время: 23:27. |