Javascript 无法创建函数间隔以阻止其他函数运行
您好,我尝试创建一个函数,以防止在用户关闭内容并刷新页面时另一个函数运行10分钟 另一个功能是在使用2参数滚动时显示内容 第一:如果用户单击关闭并刷新,它将使用第一个参数运行函数,并且没有间隔。它将运行给出间隔的第二个参数 这是我的密码 请看这个代码Javascript 无法创建函数间隔以阻止其他函数运行,javascript,Javascript,您好,我尝试创建一个函数,以防止在用户关闭内容并刷新页面时另一个函数运行10分钟 另一个功能是在使用2参数滚动时显示内容 第一:如果用户单击关闭并刷新,它将使用第一个参数运行函数,并且没有间隔。它将运行给出间隔的第二个参数 这是我的密码 请看这个代码 var popUp= document.getElementById("popup"); var closePopUp= document.getElementsByClassName('popup-close'); var halfScreen
var popUp= document.getElementById("popup");
var closePopUp= document.getElementsByClassName('popup-close');
var halfScreen= document.body.offsetHeight/2;
var showOnce = true;
var delay;
function slideUp(){
popUp.style.maxHeight="400px";
popUp.style.padding="10px 20px";
popUp.style.opacity="1";
if(popUp.className==="closed"){
popUp.className="";
}
}
function slideDown(){
popUp.style.maxHeight="0";
popUp.style.padding="0 20px";
popUp.style.opacity="0";
// add class closed for cache
if(popUp.className===""){
popUp.className="closed";
localStorage.setItem('closed', 'true'); //store state in localStorage
}
}
// start interval
function startDelay() {
delay = setInterval(slideUp, 1000);
}
// clear interval
function clearDelay() {
window.clearTimeout(delay);
}
// check if cache heve class close
window.onload = function() {
var closed = localStorage.getItem('closed');
if(closed === 'true'){
popUp.className="closed";
}
}
// show popup when scroll 50%
window.onscroll = function scroll(ev) {
// first time visited
if ((window.innerHeight+window.scrollY) >= halfScreen && showOnce) {
slideUp();
showOnce = false;
}
//same user mutilple time visited the site
else if((popUp.className==="closed" && window.innerHeight+window.scrollY) >= halfScreen && showOnce ){
startDelay();
showOnce = false;
}
};
// close button when click close
for(var i = 0; i<closePopUp.length; i++){
closePopUp[i].addEventListener('click', function(event) {
slideDown();
});
}
var popUp=document.getElementById(“popUp”);
var closePopUp=document.getElementsByClassName('popup-close');
var半屏幕=document.body.offsetHeight/2;
var showOnce=真;
无功延迟;
函数slideUp(){
popUp.style.maxHeight=“400px”;
popUp.style.padding=“10px 20px”;
popUp.style.opacity=“1”;
if(popUp.className==“closed”){
弹出。className=“”;
}
}
函数slideDown(){
popUp.style.maxHeight=“0”;
popUp.style.padding=“0 20px”;
popUp.style.opacity=“0”;
//为缓存添加已关闭的类
if(popUp.className==“”){
popUp.className=“closed”;
setItem('closed','true');//本地存储中的存储状态
}
}
//起始间隔
函数startDelay(){
延迟=设置间隔(slideUp,1000);
}
//净间隔
函数clearDelay(){
窗口清除超时(延迟);
}
//检查缓存heve类是否关闭
window.onload=函数(){
var closed=localStorage.getItem('closed');
如果(关闭=='true'){
popUp.className=“closed”;
}
}
//滚动50%时显示弹出窗口
window.onscroll=功能滚动(ev){
//首次访问
if((window.innerHeight+window.scrollY)>=半屏幕和显示一次){
slideUp();
showOnce=false;
}
//同一用户多次访问站点
else if((popUp.className==“closed”&&window.innerHeight+window.scrollY)>=半屏幕和显示一次){
startDelay();
showOnce=false;
}
};
//单击关闭时关闭按钮
对于(var i=0;i当您想要进行延迟时,请使用setTimeout函数。
setInterval重复调用函数或执行代码段,每次调用之间有固定的时间延迟。请阅读。您实际上还没有问过问题。抱歉,我会在函数分配给window后立即编辑该问题。onscroll,用户每次滚动时都会执行它。永远不会调用startDelay和stopDelay在您的示例中是d。您需要在onscroll处理程序中添加延迟。在if