Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Правильный show/toggle (https://javascript.ru/forum/misc/39678-pravilnyjj-show-toggle.html)

discognate 08.07.2013 08:57

Правильный show/toggle
 
Приветствую всех форумчан, есть выпадающее меню

http://jsfiddle.net/rqVw6/

В нем баг, работать начинает только на 2 клик, нашел как сделать правильный эффект, однако не получается, прошу помощи у тру кодеров

кривой код
function toggle_show(id) {
        document.getElementById(id).style.display = document.getElementById(id).style.display == 'none' ? 'block' : 'none';

}


http://javascript.ru/ui/show-hide-toggle

vadim5june 08.07.2013 09:07

попробуйте так
function toggle_show(id) {
        document.getElementById(id).style.display = getStyle(document.getElementById(id),'display') != 'none' ? 'none ':'block' ;
}
//-----
function getStyle(element,CSSProperty)
{ return (typeof getComputedStyle == "undefined" ? element.currentStyle : getComputedStyle(element, null))[CSSProperty];
}

Deff 08.07.2013 09:10

<input type=button value="Клик" onclick="toggle_show('Clk')"><div id="Clk" style="background:green;width:260px;height:170px;" "></div>
<script>
function toggle_show(id) {
        var el=document.getElementById(id)
el.style.display = el.style.display == 'none' ? 'block' : 'none';

}
</script>

danik.js 08.07.2013 09:32

Deff, вроде не новичек, а ключевое слово var потерял. А идея правильная

ruslan_mart 08.07.2013 10:05

<div class="menuleft">
   <ui>
      <li><a href="#">Заголовок</a></li>
      <li>Меню 1</li>
      <li>Меню 2</li>
      <li>Меню 3</li>
   </ui>
   <ui>
      <li><a href="#">Заголовок 2</a></li>
      <li>Меню 4</li>
      <li>Меню 5</li>
      <li>Меню 6</li>
   </ui>
</div>


document.getElementsByClassName('menuleft')[0].onclick = function()
{
   var e = event || window.event;
   if(e.target.tagName == 'A')
   {
       var li = this.parentNode.parentNode.getElementsByTagName('li');
       for(i=1; i<li.length; i++) li[i].style.display = li[i].style.display ? '' : 'none';
   }
}

:write:

discognate 09.07.2013 21:49

Цитата:

Сообщение от vadim5june (Сообщение 260885)
попробуйте так
function toggle_show(id) {
        document.getElementById(id).style.display = getStyle(document.getElementById(id),'display') != 'none' ? 'none ':'block' ;
}
//-----
function getStyle(element,CSSProperty)
{ return (typeof getComputedStyle == "undefined" ? element.currentStyle : getComputedStyle(element, null))[CSSProperty];
}

рабочий вариант! спасибо большое!


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