Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.12.2011, 11:21
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

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


спасибо..
Ответить с цитированием
  #2 (permalink)  
Старый 26.12.2011, 11:46
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от stos
вот этот нет
Что значит "нет"? Какие ошибки выдаёт?
Ответить с цитированием
  #3 (permalink)  
Старый 26.12.2011, 12:12
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

Сообщение от B@rmaley.e><e
Какие ошибки выдаёт?
Требуется объект
Ответить с цитированием
  #4 (permalink)  
Старый 26.12.2011, 12:16
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Значит, элемента с id=nbody не существует. Смотрите, на каком nbody оно падает и думайте, почему оно формирует такую строку.
Ответить с цитированием
  #5 (permalink)  
Старый 26.12.2011, 13:28
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

Сообщение от B@rmaley.e><e
Значит, элемента с id=nbody не существует. Смотрите, на каком nbody оно падает и думайте, почему оно формирует такую строку.
так. уточню снова весьма важный момент!
если просто алертом выводить nbody, то всё путём, будут выданы все значения!!!
else
{					
   alert(nbody);
					
}

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

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

Да я уже голову сломал в догадках почему для if всё путём, а для else - не пашет.
Ответить с цитированием
  #6 (permalink)  
Старый 26.12.2011, 13:29
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Возможно стоит проверить уникальность id в пределах страницы.
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2011, 13:35
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Вставьте внуть else
if(document.getElementById(nbody) == null) alert(nbody + ' doesnt exist');
Ответить с цитированием
  #8 (permalink)  
Старый 26.12.2011, 13:49
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

Сообщение от 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 кроме выбранного.
а почему оно нулл ?!
Ответить с цитированием
  #9 (permalink)  
Старый 26.12.2011, 13:51
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

Сообщение от GuardCat
Возможно стоит проверить уникальность id в пределах страницы.
абсолютно уникально: строка "tbody_" + числа из двух разных массивов.
совпадение исключено, 100%.
Ответить с цитированием
  #10 (permalink)  
Старый 26.12.2011, 13:56
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод на новую строку JS воспринимает как объект DOM Rig Events/DOM/Window 6 26.12.2011 20:08
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28
Игра на JS. Косяк с массивом treno1 Общие вопросы Javascript 0 08.06.2011 17:13
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23