Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法创建函数间隔以阻止其他函数运行_Javascript - Fatal编程技术网

Javascript 无法创建函数间隔以阻止其他函数运行

Javascript 无法创建函数间隔以阻止其他函数运行,javascript,Javascript,您好,我尝试创建一个函数,以防止在用户关闭内容并刷新页面时另一个函数运行10分钟 另一个功能是在使用2参数滚动时显示内容 第一:如果用户单击关闭并刷新,它将使用第一个参数运行函数,并且没有间隔。它将运行给出间隔的第二个参数 这是我的密码 请看这个代码 var popUp= document.getElementById("popup"); var closePopUp= document.getElementsByClassName('popup-close'); var halfScreen

您好,我尝试创建一个函数,以防止在用户关闭内容并刷新页面时另一个函数运行10分钟

另一个功能是在使用2参数滚动时显示内容 第一:如果用户单击关闭并刷新,它将使用第一个参数运行函数,并且没有间隔。它将运行给出间隔的第二个参数

这是我的密码

请看这个代码

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