【问题标题】:JavaScript function does not fireJavaScript 函数不触发
【发布时间】:2015-05-20 13:02:32
【问题描述】:

我正在构建一个使用 JavaScript 使顶部菜单下拉和关闭的移动页面,但它不起作用。 这是JS

<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>

以前,我在函数内部指定位置的顶部看到声明语句,但每个函数只触发一次。

【问题讨论】:

  • 直接声明变量而不是window.load函数

标签: javascript mobile web


【解决方案1】:

变量elemburgercross 定义在不同的范围内,在您的函数中不可见。

你应该尝试早点声明它:

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

【讨论】:

  • 感谢您的建议!我把它扔进去了,但每个函数仍然只触发一次,我不知道为什么......
  • 哦,实际上,我刚刚意识到在 JS 的最后一行代码中,我不小心输入了 burger 而不是 cross,所以当它已经关闭时,这是把十字架放在上面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多