Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS. Не видит объект (https://javascript.ru/forum/misc/24322-js-ne-vidit-obekt.html)

stos 26.12.2011 11:21

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";


спасибо..

B@rmaley.e><e 26.12.2011 11:46

Цитата:

Сообщение от stos
вот этот нет

Что значит "нет"? Какие ошибки выдаёт?

stos 26.12.2011 12:12

Цитата:

Сообщение от B@rmaley.e><e
Какие ошибки выдаёт?

Требуется объект

B@rmaley.e><e 26.12.2011 12:16

Значит, элемента с id=nbody не существует. Смотрите, на каком nbody оно падает и думайте, почему оно формирует такую строку.

stos 26.12.2011 13:28

Цитата:

Сообщение от B@rmaley.e><e
Значит, элемента с id=nbody не существует. Смотрите, на каком nbody оно падает и думайте, почему оно формирует такую строку.

так. уточню снова весьма важный момент!
если просто алертом выводить nbody, то всё путём, будут выданы все значения!!!
else
{					
   alert(nbody);
					
}

НО!, стоит изменить код на следующий
else
{					
   alert(document.getElementById(nbody).style.backgroundColor);					
}

и всё! всё стопарится на первом же else.

Да я уже голову сломал в догадках почему для if всё путём, а для else - не пашет.

GuardCat 26.12.2011 13:29

Возможно стоит проверить уникальность id в пределах страницы.

B@rmaley.e><e 26.12.2011 13:35

Вставьте внуть else
if(document.getElementById(nbody) == null) alert(nbody + ' doesnt exist');

stos 26.12.2011 13:49

Цитата:

Сообщение от B@rmaley.e><e
Вставьте внуть else
if(document.getElementById(nbody) == null) alert(nbody + ' doesnt exist');

вставил. выдало
tbody_01_0 doesnt exist
...
tbody_36_68 doesnt exist

ну т.е. все tbody кроме выбранного.
а почему оно нулл ?!

stos 26.12.2011 13:51

Цитата:

Сообщение от GuardCat
Возможно стоит проверить уникальность id в пределах страницы.

абсолютно уникально: строка "tbody_" + числа из двух разных массивов.
совпадение исключено, 100%.

B@rmaley.e><e 26.12.2011 13:56

Цитата:

Сообщение от stos
а почему оно нулл ?!

Потому что на момент срабатывания Вашей функции их нет в DOM дереве документа. Почему их там нет — надо спрашивать у Вас.


Часовой пояс GMT +3, время: 12:57.