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 14:02

Цитата:

Сообщение от B@rmaley.e><e
Потому что на момент срабатывания Вашей функции их нет в DOM дереве документа.

так. но почему тогда функция срабатывает на условие if ?!

B@rmaley.e><e 26.12.2011 14:03

Каком условии?

stos 26.12.2011 14:09

Цитата:

Сообщение от stos (Сообщение 146109)
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";
                 }
             }
         }

вот здесь.

stos 26.12.2011 14:11

Если бы ошибка выдавалась на if и на else, тогда - да, надо думать и искать. Но ведь на if - срабатывает и всё видит, и всё понимает, и всё правильно делает.

GuardCat 26.12.2011 14:13

Похоже, нужен весь код. По этому фрагменту непонятно, что не так. Можно только гадать. Например: невыбранный элемент не имеет идентификатора или он присвоен неверно.

stos 26.12.2011 14:21

Цитата:

Сообщение от GuardCat
Например: невыбранный элемент не имеет идентификатора или он присвоен неверно.

все идентификаторы присваиваются в цикле. И потому как на условие 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";
					}
				}

B@rmaley.e><e 26.12.2011 14:33

Цитата:

Сообщение от stos
Но ведь на if - срабатывает и всё видит, и всё понимает, и всё правильно делает.

Что? Как из того, что для какого-то i условие выполняется, следует, что для другого i будет существовать элемент с id=nbody?

stos 26.12.2011 14:36

твою мать.
дело в кавычках.

жээээээсть. прость жэсть.

stos 26.12.2011 14:38

Цитата:

Сообщение от B@rmaley.e><e
Как из того, что для какого-то i условие выполняется, следует, что для другого i будет существовать элемент с id=nbody?

ммм... ну какбе элементарно. карандаш, бумага.
выписываем все ИД, и расписываем весь цикл на бумаге и проверяем пошагово.
ну и, само собой, исходный код сформированной страницы смотрим.

stos 26.12.2011 14:39

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