[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Конфликт функций
Dunix
Что я хотел сделать:
скрытие дива v-menu при нажатии на див content
раскрытие и скрытие дива v-menu при нажатии на Click Here
что получилось:
скрытие работает, при нажатии на Click Here не работает раскрытие
Сам быдлокод:

<head>
<link
rel="stylesheet" type="text/css" media="all" href="style.css">
<script
type="text/javascript">

function
showElement(layer) {
var myLayer = document.getElementById("v-menu");
if ( myLayer.style.display=="none" )
{
myLayer.style.display="block";
myLayer.backgroundPosition="top";
} else {
myLayer.style.display="none";
}
}


function hideElement(layer) {
var myLayer = document.getElementById("v-menu");
if ( myLayer.style.display=="block" )
{
myLayer.style.display="none";
}
}

</script>
</head>
<div
id="content" onclick="javascript:hideElement('v-menu')">

<a
href="#" class="button" id="button" onclick="javascript:showElement('v-menu')">
<span>
Click Here</span>
</a>

<div
id="menu">
<ul
id="v-menu" class="v-menu" style="display:none;">
<li><a
href="/user/profile/">профиль</a></li>
<li><a
href="/user/viewfriends/">друзья</a></li>
<li><a
href="/user/saved/">избранное</a></li>
<li><a
href="/login.php?op=logout&return=">выйти</a></li>
</ul>
</div>
</div>


прошу помочь найти конфликт функций, уверен что именно конфликт, так как при отключении функции hideElement, функция showElement начинает работать как положено



Спустя 4 минуты, 31 секунда (20.10.2011 - 16:36) Winston написал(а):
Выложи еще свой css.

Спустя 3 минуты, 5 секунд (20.10.2011 - 16:39) Dunix написал(а):
да там ничего особенного вроде

.v-menu{border:solid 1px #7f9fbf; width:200px; clear:both;}
ul.v-menu, v.menu li{padding:0; margin:0; list-style:none;}
ul.v-menu{clear:both; margin-top:6px;padding:6px 2px;}
ul#v-menu.v-menu li:hover {background-color: #D8DFEA;}
ul#v-menu.v-menu li a{color: #333333;font-size: 11px;font-family: "lucida grande",tahoma,verdana,arial,sans-serif;text-decoration:none;padding-left:10px;}


css из демки взята, я её даже не редактировал ещё

Спустя 10 минут, 11 секунд (20.10.2011 - 16:50) Winston написал(а):
У меня вообще нифига не показывает и не скрывает, только ссылка висит. blink.gif

Спустя 10 минут (20.10.2011 - 17:00) m4a1fox написал(а):
Dunix
Я тебе еще раз рекомендую посмотреть в сторону jq! Она удобнее, а и просто намного! В jq твоя проблема называется дефолтное поведение объекта!

Спустя 2 минуты (20.10.2011 - 17:02) imbalance_hero написал(а):
Dunix
Зачем ты обе функции вешаешь на один блок?
Тебе нужны не 2 функции, а всего ОДНА. Внутри неё ты делаешь проверку, что сейчас у объекта, block/none, и заменяешь на противоположное!

Спустя 1 минута, 38 секунд (20.10.2011 - 17:03) imbalance_hero написал(а):
Ах да, ты же уже всё это сделал в showElement, зачем вторая функция? Она повторяет первую...

Спустя 24 минуты, 46 секунд (20.10.2011 - 17:28) Dunix написал(а):
я же написал что мне необходимо скрывать v-menu при клике невидимого дива content, именно для этого и предназначается вторая функция hideElement

Спустя 5 минут, 15 секунд (20.10.2011 - 17:33) imbalance_hero написал(а):
Ну я ответил, не надо делать внутри одного второе.

Спустя 1 минута, 57 секунд (20.10.2011 - 17:35) Dunix написал(а):
можешь подкинуть пару дровишек, а то я ещё часбать мозги буду. С JS дело имею впервые

Спустя 2 минуты, 36 секунд (20.10.2011 - 17:38) imbalance_hero написал(а):
Я не понимаю, что ты сделать хочешь. Сноси вторую функцию, будет тебе счастье smile.gif
И обработчик вешай на <div> первой функции.

Спустя 1 минута, 20 секунд (20.10.2011 - 17:39) Winston написал(а):
Свернутый текст
<head>
<style
type="text/css">
.v-menu{border:solid 1px #7f9fbf; width:200px; clear:both;}
ul.v-menu, v.menu li{padding:0; margin:0; list-style:none;}
ul.v-menu{clear:both; margin-top:6px;padding:6px 2px;}
ul#v-menu.v-menu li:hover {background-color: #D8DFEA;}
ul#v-menu.v-menu li a{color: #333333;font-size: 11px;font-family: "lucida grande",tahoma,verdana,arial,sans-serif;text-decoration:none;padding-left:10px;}
</style>
<script
type="text/javascript">

function
showElement(layer) {
var myLayer = document.getElementById("v-menu");
if (myLayer.style.display == "none")
{
myLayer.style.display = "block";
myLayer.backgroundPosition="top";
} else {
myLayer.style.display ="none";
}
}

</script>
</head>
<div
id="content">

<a
href="#" class="button" id="button" onclick="showElement('v-menu')">
<span>
Click Here</span>
</a>

<div
id="menu">
<ul
id="v-menu" class="v-menu" style="display:none;">
<li><a
href="/user/profile/">профиль</a></li>
<li><a
href="/user/viewfriends/">друзья</a></li>
<li><a
href="/user/saved/">избранное</a></li>
<li><a
href="/login.php?op=logout&return=">выйти</a></li>
</ul>
</div>
</div>

Спустя 8 минут, 40 секунд (20.10.2011 - 17:48) ZSH написал(а):
Цитата
можешь подкинуть пару дровишек, а то я ещё часбать мозги буду. С JS дело имею впервые

JS здесь не причем, у вас ссылка:
<a href="#" class="button" id="button" onclick="javascript:showElement('v-menu')">
<span>
Click Here</span>
</a>

находится внитри дива:
<div id="content" onclick="javascript:hideElement('v-menu')">

и при клике по ссылке, кликается также по диву и вызывается функция javascript:hideElement('v-menu');

Спустя 7 минут, 48 секунд (20.10.2011 - 17:56) Dunix написал(а):
ZSH, я хочу от вас детей laugh.gif laugh.gif laugh.gif
странно, а почему так? Я столько нервов потратил на эту хрень

Спустя 22 минуты, 44 секунды (20.10.2011 - 18:18) ZSH написал(а):
Вынести ссылку за пределы дива, НО при клике на любой елемент внутри дива меню будет скрыватся. Если не устраивает то удалить onclick из дива и управлять только ссылкой, тогда функция hideElement() не нужна.


Спустя 5 дней, 20 часов, 46 минут, 32 секунды (26.10.2011 - 15:05) Dunix написал(а):
да я уже нафиг всё переделал, на примере поп ап боксов (когда логинишься на некоторых сайтах, вылезает окошко), там и нашёл адекватное решение
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.