当我用鼠标点击时,我想制作页面滚动。但是,当我点击多次时,该功能再次运行。我想只运行一次。当我阅读有关scrollBy
的文章时,我想到了这个想法。
我该如何解决这个问题?
注意:我尝试过(onmouseover)事件
window.onclick = function () {
"use strict";
var m = setInterval(function () {
window.scrollBy(0,1);
console.info(m);
},4);
window.onmousemove = function () {
clearInterval(m);
};
};
答案 0 :(得分:0)
保留时间间隔的变量m
在window.onclick
的函数范围内定义,这使得它在window.onmousemove
内不可用。将变量定义移动到全局范围,然后可以从两个函数中获取它们:
var m;
window.onclick = function () {
"use strict";
m = setInterval(function () {
window.scrollBy(0,1);
console.info(m);
},4);
};
window.onmousemove = function () {
if (m) {
clearInterval(m);
}
};
编辑再次阅读您的问题后,您说您只希望此功能运行一次。在这种情况下,添加一个检查以查看它是否已经运行:
var m;
var hasRun = false;
window.onclick = function () {
"use strict";
if (!hasRun) {
m = setInterval(function () {
window.scrollBy(0,1);
console.info(m);
},4);
hasRun = true;
}
};
window.onmousemove = function () {
if (m) {
clearInterval(m);
}
};
答案 1 :(得分:0)
特别感谢:rickdenhaan 这是正确的代码:
var m;
var hasRun = false;
window.onclick = function () {
"use strict";
if (!hasRun) {
m = setInterval(function () {
window.scrollBy(0,1);
console.info(m);
},4);
hasRun = true;
}
};
window.onmousemove = function () {
if (m) {
clearInterval(m);
}
var hasRun = false;
};