如果用户第二次单击“ myFormWrapper
”(我的表单)中的任何元素,我将尝试检测并触发一个函数。
var timesClicked = 0;
document.querySelectorAll('myFormWrapper').addEventListener('click', false);
timesClicked++;
if (timesClicked>1) {
function() {
setInterval( jumpRate, 500);
});
function jumpRate(){
var top = document.getElementById("rate").offsetTop;
window.scrollTo(0, top);
}
}
});
答案 0 :(得分:1)
您正在使用querySelectorAll
。该函数返回一个NodeList
。要将侦听器添加到列表中的所有元素,您必须对其进行迭代。 forEach
。
提供的参数不是正确的选择器。假设您使用的是myFormWrapper
类,则将其更改。
您没有正确提供回调函数。您正在传递false
而不是函数。
您还将超时包装在函数中。您没有打电话。
此外,您只想触发一次滚动。在这种情况下,您应该使用setTimeout
而不是setInterval
。 setTimeout
仅在给定毫秒后调用一次回调,setTimeout
将重复调用该回调。
函数jumpRate
不必是命名函数,您可以匿名传递。
尝试一下:
var timesClicked = 0;
document.querySelector('.myFormWrapper').forEach(function (element) {
element.addEventListener('click', function () {
timesClicked++;
if (timesClicked > 1) {
setTimeout(function () {
var top = document.getElementById("rate").offsetTop;
window.scrollTo(0, top);
}, 500);
}
});
};
});