Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2013, 14:27   #1
povelitel
Пользователь
 
Регистрация: 27.06.2012
Сообщений: 39
По умолчанию Проблема в Javascript

Есть конструкция html

Код HTML:
<ul id="nav" onclick="myFun('nav')">
    <li onclick="myFun('myLi1')"><a href="#">HOME</a>
        <ul id="myLi1">
          <li><a href="#">HOME</a></li>
          <li><a href="#">PORTFOLIO</a></li>
          <li><a href="#">BLOG</a></li>
        </ul>
    </li>
    <li onclick="myFun('myLi2')"><a href="#">PORTFOLIO</a>
        <ul id="myLi2">
          <li><a href="#">HOME</a></li>
          <li><a href="#">PORTFOLIO</a></li>
          <li><a href="#">BLOG</a></li>
        </ul>
    
    </li>
        <li><a href="#">BLOG</a></li>
        <li><a href="#">SERVICES</a></li>
        <li><a href="#">CASE STUDIES</a></li>
        <li><a href="#">CONTACTUS</a></li>
    </ul>
и есть сам скрипт, который при клике открывает спрятаные ссылки в теге ul.

Цитата:
function myFun(n){

var myBlock = document.getElementById(n);

if(myBlock.style.display = 'none'){

myBlock.style.display ='block';

}
}
вопрос: Как сделать так, чтобы при повторном клике список ul закрывался обратно?
povelitel вне форума Ответить с цитированием
Старый 19.01.2013, 14:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
if(myBlock.style.display = 'none'){
myBlock.style.display ='block';
} else {
myBlock.style.display ='none';
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2013, 18:27   #3
povelitel
Пользователь
 
Регистрация: 27.06.2012
Сообщений: 39
По умолчанию Александр Трифанов

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
if(myBlock.style.display = 'none'){
myBlock.style.display ='block';
} else {
myBlock.style.display ='none';
}
Такой вариант не работает
povelitel вне форума Ответить с цитированием
Старый 19.01.2013, 18:53   #4
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Код:
if( myBlock.style.display === 'block' || !myBlock.style.display ) {
    myBlock.style.display = 'none';
} else {
    myBlock.style.display = 'block';
}
че т голова туго варит ^__^
Тишина – самый громкий звук

Последний раз редактировалось nerv; 19.01.2013 в 18:59.
nerv вне форума Ответить с цитированием
Старый 19.01.2013, 18:53   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Такой вариант не работает
Потому что в JS оператор сравнения это ==.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2013, 19:04   #6
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
<ul id="nav" onclick="myFun(this)">
.....
function myFun(n){
n.style.display=(n.style.display=='block')? 'none': 'block';}
Кто напишет код меньше?))
Кольша вне форума Ответить с цитированием
Старый 19.01.2013, 20:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Например я:
Код:
<ul id="nav" onclick="this.style.display=(this.style.display=='block')? 'none': 'block';}">
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2013, 20:08   #8
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Ну если можно было убрать функцию..то воот:
Код:
<ul onclick="this.style.display=(this.style.display=='block')?'none':'block';">
на пару символов меньше))
Кольша вне форума Ответить с цитированием
Старый 19.01.2013, 20:29   #9
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Какой же это свитчер? После display:none по нему кликнуть уже не получится)
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 19.01.2013, 21:05   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
MyLastHit
А ты прав. Без функции тут никак ИМХО.
Хотя...
Код:
    <li onclick="this.children[1].style.display=(this.children[1].style.display=='block')?'none':'block';"><a href="#">HOME</a>
        <ul id="myLi1">
          <li><a href="#">HOME</a></li>
          <li><a href="#">PORTFOLIO</a></li>
          <li><a href="#">BLOG</a></li>
        </ul>
    </li>
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с javascript Andrody JavaScript, Ajax 2 05.08.2012 20:40
Проблема с JavaScript модуля Zymic JavaScript, Ajax 3 17.01.2012 09:09
проблема с javascript в explorer davl67 Помощь студентам 2 03.10.2010 10:03
проблема с таймером javascript storm296 JavaScript, Ajax 1 03.08.2010 15:38
JavaScript. Проблема с GetElementById kirill555 Помощь студентам 1 14.02.2008 12:30