2015-05-20 3 views
1

Я работаю над созданием мобильной страницы, использующей JavaScript, чтобы вывести верхнее меню и закрыть его, но он не работает. Вот JSФункция JavaScript не срабатывает

<script> 
window.onload = function() { 
var elem = document.getElementById('navBarMobile'); 
var burger = document.getElementById('hamburgerMobile'); 
var cross = document.getElementById('crossMobile'); 
} 

function menuExpand() { 

    elem.style.transition = "height 1s linear 0s"; 
    elem.style.height = "292px"; 

    burger.style.transition = "opacity 0.5s linear 0s"; 
    burger.style.opacity = "0"; 
    burger.style.zIndex = "0"; 

    cross.style.transition = "opacity 0.5s linear 0.5s" 
    cross.style.opacity = "1"; 
    cross.style.zIndex = "1"; 
} 

function menuClose() { 

    elem.style.transition = "height 1s linear 0s"; 
    elem.style.height = "87px"; 

    burger.style.transition = "opacity 0.5s linear 0.5s"; 
    burger.style.opacity = "1"; 
    burger.style.zIndex = "1"; 

    cross.style.transition = "opacity 0.5s linear 0s"; 
    cross.style.opacity = "0"; 
    burger.style.zIndex = "0"; 
} 
</script> 

И HTML

<div id="hamburgerMobile" onclick="menuExpand();"></div> 
<div id="crossMobile" onclick="menuClose();"></div> 

Раньше у меня были заявления декларации видели в верхней части в отведенных местах внутри функции, но каждая функция стреляла только один раз.

+1

Объявите переменную непосредственно вместо функции window.load – Hkachhia

ответ

5

Переменные elem, burger и cross определены в разных областях и не видны в ваших функциях.

Вы должны попытаться объявить его раньше:

var elem; 
var burger; 
var cross; 

window.onload = function() { 
    elem = document.getElementById('navBarMobile'); 
    burger = document.getElementById('hamburgerMobile'); 
    cross = document.getElementById('crossMobile'); 
} 

Читайте о функциональных областях: http://www.w3schools.com/js/js_scope.asp

+0

Спасибо за предложение! Я бросил это, но каждая функция по-прежнему срабатывает только один раз, и я не знаю, почему ... – user3245765

+0

На самом деле, я только что понял в последней строке кода в JS. Я случайно набрал гамбургер вместо креста, так что это было крест сверху, когда он уже был закрыт. – user3245765

Смежные вопросы