Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выпадающий список, не работает( 
V
    Опции темы
Sergio
Дата 30.3.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



Код

<div class="listing">
<h3 onmouseover="accord()"><a href="#">Menu item</a></h3>
    <ul id="lister0">
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
    </ul>
</div>

Код

function accord() {
    if (lister0.style.display == "none")
      {
        lister0.style.display = "block";
      }
          else {
     lister0.style.display = "none";
}

Здраствуйте. Не работает меню, а должно бы  smile   smile Помогите со скриптом плз.
PM MAIL ICQ   Вверх
Alx
Дата 30.3.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



ну я бы поставил } в конце функции..
а вообще весь код дурацкий, имхо..


--------------------
PM MAIL WWW ICQ   Вверх
Sergio
Дата 30.3.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



Alx, а можеш другой показать?
Я думал вот так (как в С++):
Код

lister0.style.display == "none" != lister0.style.display == "block";

но так не работает

Это сообщение отредактировал(а) Sergio - 30.3.2007, 14:20
PM MAIL ICQ   Вверх
Alx
Дата 30.3.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



ну, во-первых, обращаемся к ноде по id так: document.getElementById(nodeId)
во-вторых, событие onmouseover ставим на A, а не на H3
и в-третьих,
Код

function accord() {
    if (lister0.style.display == "none")
      {
        lister0.style.display = "block";
      }
          else {
     lister0.style.display = "none";
}


заменяем на

Код

function accord()
{   var obj = document.getElementById('lister0');
    obj.style.display = (obj.style.display == 'block') ? 'none' : 'block';
}


мм..

Это сообщение отредактировал(а) Alx - 30.3.2007, 14:27


--------------------
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 30.3.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(Alx @  30.3.2007,  14:25 Найти цитируемый пост)
во-вторых, событие onmouseover ставим на A, а не на H3

Имхо, без разницы. Да и вообще логика - по одному наведению показать, по второму скрыть - какая-то "неюзабельная"... Лично я бы повесил пару событий onmouseover-onmouseout на сам div: по наведению - показать ul, по уводу (включая увод с с ul как части дива) - скрыть...
Код

<style>
.listing { width: 8em; border: 1px solid #ccc; }
.listing ul { display: none; }
</style>
<script>
function sh(obj, state) {
   obj.getElementsByTagName('ul')[0].style.display = state ? 'block' : 'none';
}
</script>
<div class="listing" onmouseover="sh(this,1)" onmouseout="sh(this,0)">
<h3><a href="#">Menu item</a></h3>
    <ul>
        <li><a href="# " title="help" target="_self">List item</a></li>
        <li><a href="# " title="help" target="_self">List item</a></li>
        <li><a href="# " title="help" target="_self">List item</a></li>
        <li><a href="# " title="help" target="_self">List item</a></li>
        <li><a href="# " title="help" target="_self">List item</a></li>
    </ul>
</div>



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
dstorm81
Дата 30.3.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



господа, в мне кажется что данная вещь легко решается через ксс,
с маленьким вкраплением скрптов для ослика ИА
посмотри на http://alistapart.com/ например,
хотя если охота без скриптов, то придется писать здоровые хаки для ИА, но они здоровые так что проше ксс + ароунд скрипт, имхо


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
SelenIT
Дата 30.3.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



dstorm81, верно рассуждаете... ;)
Код

<style>
div.listing { width: 8em; border: 1px solid #ccc; behavior: url(hover.htc); }
div.listing ul { display: none; }
div.listing:hover ul { display: block; }
</style>
<div class="listing">
<h3><a href="#">Menu item</a></h3>
    <ul>
        <li><a href="# " title="help" target="_self">List item</a></li>
        <li><a href="# " title="help" target="_self">List item</a></li>
        <li><a href="# " title="help" target="_self">List item</a></li>
        <li><a href="# " title="help" target="_self">List item</a></li>
        <li><a href="# " title="help" target="_self">List item</a></li>
    </ul>
</div>

и файлик hover.htc - та самая "скриптовая добавка" для IE:
Код

<PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="sh(1)" />
<PUBLIC:ATTACH EVENT="onmouseout"  ONEVENT="sh(0)" />
<script LANGUAGE="JScript">
function sh(state) {
   this.getElementsByTagName('ul')[0].style.display = state ? 'block' : 'none';
}
</SCRIPT>


Это сообщение отредактировал(а) SelenIT - 30.3.2007, 18:18


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Sergio
Дата 30.3.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



Всем спасибо за ответы. Но я всё  же не пойму почему это не работаэт???
Код

function accord()    
{   
var obj = document.getElementById('lister0');    
    if(obj.style.display == 'block')
      {
        obj.style.display = 'none';
      }
    else {obj.style.display = 'block';}     
}

Код

<div class="listing">
<h3 onmouseover="accord()"><a href="#">Menu item</a></h3>
    <ul id="lister0">
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
        <li><a href="# " title="help help help help" target="_self">List item</a></li>
    </ul>
</div>


Это сообщение отредактировал(а) Sergio - 30.3.2007, 20:01
PM MAIL ICQ   Вверх
SelenIT
Дата 30.3.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Sergio, потому что присваивание - один знак "=", а не два (строчки 6 и 8 ;)... oops, это уже исправили...

Так оно работает, просто нелогично... Кроме того, при наводе на ссылку как минимум в Gecko происходит mouseout с H3 + опять mouseover ("всплывший" со ссылки) - т.е. фактически 2 mouseover-а (основной + всплывший) подряд, уничтожающие действия друг друга (вот здесь 12345c подробно это описал).

Так что два события нужно обрабатывать так или иначе...

Это сообщение отредактировал(а) 12345c - 3.3.2008, 12:32


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Alx
Дата 1.4.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



Цитата(SelenIT @  30.3.2007,  14:43 Найти цитируемый пост)
Да и вообще логика - по одному наведению показать, по второму скрыть - какая-то "неюзабельная"... 

вопрос же был про практику, а не про логику...

Цитата(dstorm81 @  30.3.2007,  17:05 Найти цитируемый пост)
господа, в мне кажется что данная вещь легко решается через ксс,
с маленьким вкраплением скрптов для ослика ИА

ээ.. я с этим подходом незнаком, но на первый взгляд код из 1 поста товарища SelenIT гораздо короче, чем из второго.. в чем же смысл? тем более из ваших слов мне понятно, что это будет работать только в IE? чушь какая-то...

Цитата(Sergio @  30.3.2007,  18:50 Найти цитируемый пост)
Всем спасибо за ответы. Но я всё  же не пойму почему это не работаэт???

Цитата(Alx @  30.3.2007,  14:08 Найти цитируемый пост)
я бы поставил } в конце функции..

поставил - заработало...


--------------------
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 1.4.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Alx, "только в IE" во втором примере работает этот самый дополнительный файлик - behavior. В "правильных" браузерах все работает и без него, одна первая часть вообще без скриптов...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Alx
Дата 16.4.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



ок, спасибо. буду знать.


--------------------
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0836 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.