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

时间:2017-01-07 01:21:59

标签: javascript

你好我尝试创建该函数以防止其他函数运行10分钟如果用户关闭内容并刷新页面。

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

的第二个参数

继承我的代码。

https://jsfiddle.net/8c1ng49a/1/

请查看此代码

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();
    });
}

当我刷新时,我的间隔对第二个参数没有起作用,我不知道为什么。 但是如果在我的第一个参数上添加startDelay它的工作。但我需要把间隔放在我的第二个论点上

1 个答案:

答案 0 :(得分:0)

当你想延迟使用setTimeout函数时。 Here is documentation of this function.

setInterval重复调用函数或执行代码片段,每次调用之间有固定的时间延迟。