gpt4 book ai didi

javascript - 为什么这个JS自调用函数不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:09 25 4
gpt4 key购买 nike

我正在尝试使用自动自调用函数来打开和关闭菜单,但它不起作用。

我依赖于我看到的有关自调用函数的示例,但现在我不知道出了什么问题。

我尝试了不同的语法来调用函数,但没有任何效果,但当我使用“onclick=函数名称”调用函数时一切正常,所以我猜问题出在自调用函数上。

<body>
<nav class="navbar">
<span class="open-slide" >
<a href="#">
<img src="img/menu.png" id="btn-open">
</a>
</span>
<h1 id="t1">Innova<span id="t2">TEK</span> </h1>
</nav>

<div id="side-menu" class="side-nav">
<a href="#" class="btn-close">
<img src="img/back.png" alt="" id="btn-close"></a>
<a href="#"><img i class = "menu"src="img/home.png" alt=""> &nbsp;Home</a>
<a href="#"> <img src="img/about.png" class = "menu" alt=""> &nbsp; About</a>
<a href="#"><img src="img/support.png" alt="">&nbsp; Services</a>
<a href="#"> <img src="img/contact.png" alt="">&nbsp; Contact</a>
</div>
<div id="main">
<h1>Responsive Side Menu</h1>
</div>

(function(){
show();
hide();
});

function show(){
document.getElementById("btn-open").addEventListener('click', menuShow());
}

function hide(){
document.getElementById("btn-close").addEventListener("click", menuHide());
}

function menuShow(){
document.getElementById('side-menu').style.width = '17%';
document.getElementById('main').style.marginLeft = '17%';
}

function menuHide(){
document.getElementById('side-menu').style.width = '0';
document.getElementById('main').style.marginLeft = '0';
}

最佳答案

您在 IIFE 末尾缺少 (),没有它函数将不会调用自身。此外,您应该将函数引用传递给事件监听器,而不是函数调用。

这是工作代码,我为 btn-close 添加了一些 css 以便我们可以看到它进行测试。

(function(){
show();
hide();
})(); // <--- were missing the () here

function show(){
document.getElementById("btn-open").addEventListener('click', menuShow);
}

function hide(){
document.getElementById("btn-close").addEventListener("click", menuHide);
}

function menuShow(){
document.getElementById('side-menu').style.width = '17%';
document.getElementById('main').style.marginLeft = '17%';
}

function menuHide(){
document.getElementById('side-menu').style.width = '0';
document.getElementById('main').style.marginLeft = '0';
}
#btn-close {
position:relative;
float:left;
height:20px;
width: 20px;
border: 1px solid #f00;
}
<nav class="navbar">
<span class="open-slide" >
<a href="#">
<img src="img/menu.png" id="btn-open">
</a>
</span>
<h1 id="t1">Innova<span id="t2">TEK</span> </h1>
</nav>

<div id="side-menu" class="side-nav">
<a href="#" class="btn-close">
<img src="img/back.png" alt="" id="btn-close"></a>
<br style="clear:both" />
<a href="#"><img i class = "menu"src="img/home.png" alt=""> &nbsp;Home</a>
<a href="#"> <img src="img/about.png" class = "menu" alt=""> &nbsp; About</a>
<a href="#"><img src="img/support.png" alt="">&nbsp; Services</a>
<a href="#"> <img src="img/contact.png" alt="">&nbsp; Contact</a>
</div>
<div id="main">
<h1>Responsive Side Menu</h1>
</div>

关于javascript - 为什么这个JS自调用函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57634592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com