【发布时间】:2018-01-15 02:42:53
【问题描述】:
我有一个简单的点击功能,当点击按钮时,用户无法滚动。这一切正常。该按钮虽然用作切换,但在切换的“其他”部分,即当用户再次单击时,我想删除停止用户使用 removeEventListener(); 方法滚动的事件侦听器。我在此方法中调用的函数不起作用?
我似乎无法找出问题所在?
codepen:https://codepen.io/emilychews/pen/MrBvzP
JS
var button = document.getElementById("button");
// function to be called and removed when button is clicked
function noscroll() {
window.scrollTo(0, 0);
}
// TOGGLE EVENT LISTENER
var scrollToggle = false;
function toggleEventListener() {
if (scrollToggle === false) {
window.addEventListener("scroll", function(){
noscroll();
}, false);
scrollToggle = true;
} else {
window.removeEventListener("scroll", function(){
noscroll();
}, false);
scrollToggle = false;
}
}
button.addEventListener("click", function() {
toggleEventListener();
}, false)
body {margin: 0; padding: 0; height: 150vh;}
#button {font-family: arial;
margin: 10px 0 0 30px;
width: 100px;
height: 50px;
background: red;
display: flex;
justify-content: center;
align-items: center;
color: white;
cursor: pointer;
}
<div id="button">Click Me</div>
【问题讨论】:
-
这可以用6行代码来实现。您不必绑定和取消绑定事件侦听器。
标签: javascript html dom-events toggle