Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   раскрывающийся список не работает при doctype в mozilla firefoxe (https://javascript.ru/forum/events/22026-raskryvayushhijjsya-spisok-ne-rabotaet-pri-doctype-v-mozilla-firefoxe.html)

dimwolf 03.10.2011 18:24

раскрывающийся список не работает при doctype в mozilla firefoxe
 
Здравстуйте, подскажите пожалуйста, как поправить скрипт раскрывающего и закрывающего списка чтобы, он начал работать в firefox вместе с "doctype". В остальных браузерах работает, в firefox выдает ошибку "document.all is undefined"

<div class="content">
<? if (!$_GET['mid']) {

$rez=mysql_query("select * from ".$prefix."SS_categories order by opis_rus asc");
while($ar=mysql_fetch_assoc($rez)) {
$arcats[]=$ar;
}

for ($i=0;$i<sizeof($arcats);$i++) {

$cats=$arcats[$i];

echo '<a name="cat'.$cats["categoryID"].'"></a>';
echo '<p><a href="#cat'.$cats["categoryID"].'" onclick="javascript:if ( document.all.lay'.$i.'.style.display == \'none\' )
document.all.lay'.$i.'.style.display = \'\';
else
document.all.lay'.$i.'.style.display = \'none\';
"><h2>'.$cats['name']."</h2></a></p>\n";
echo "<div id='lay".$i."' style='display:".($cats["categoryID"]==$_GET['catid'] ? 'block' : 'none')."'>\n";
$rez=mysql_query("select * from ".$prefix."SS_products where categoryID=".$cats["categoryID"]." order by name asc");

...

}
?>
</div>

yashka525 03.10.2011 20:31

0_о зачем столько кода? Тем более PHP, когда Вы спрашиваете про JS?

Пожалуйста, локализуйте проблему!

Выделите фрагмент кода, по которому есть вопрос и опубликуйте его отдельно.

И, по возможности, уберите из кода мусор, чтобы нам легче было сориентироваться и помочь решить проблему.

Спасибо.

P.S. код форматируют специальные теги [ js ] ... [/js], [ html ] ... [/html] и другие аналогичные, сам. http://javascript.ru/formatting

dimwolf 04.10.2011 12:46

dimwolf,
переделал, красным выделил где проблема

ksa 04.10.2011 14:08

Цитата:

Сообщение от dimwolf
красным выделил где проблема

Как вариант, вместо пустышки

document.all.lay'.$i.'.style.display = '';


таки что-то прописать в display... Например...

document.all.lay'.$i.'.style.display = 'block';

dimwolf 04.10.2011 14:23

Цитата:

Сообщение от ksa (Сообщение 129505)
Как вариант, вместо пустышки

document.all.lay'.$i.'.style.display = '';


таки что-то прописать в display... Например...

document.all.lay'.$i.'.style.display = 'block';

не помогло
Я думаю надо вместо document.all прописать document.getElementById, но как это правильно сделать? подскажите!

ksa 04.10.2011 14:45

Цитата:

Сообщение от dimwolf
Я думаю надо вместо document.all прописать document.getElementById, но как это правильно сделать?

А где там ИД?

Общий синтаксис такой

document.getElementById('нужный_ИД').style.display='значение'

dimwolf 04.10.2011 15:01

Цитата:

Сообщение от ksa (Сообщение 129517)
А где там ИД?

Общий синтаксис такой

document.getElementById('нужный_ИД').style.display='значение'

может так
document.getElementById('lay".$i."').style.display='значение'



но так тоже не работает:( , значит lay".$i." не ИД, тогда как заставить работать document.all в firefox вместе с doctype (без doctype работает)?

ksa 04.10.2011 15:08

dimwolf, что вообще известно про тот элемент?


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