函数总是忽略第一个参数?

时间:2017-01-07 06:20:40

标签: javascript

我有一个内容会在滚动时显示。 当内容显示时,用户可以关闭它。如果用户选择关闭它然后刷新页面。即使用户向上滚动页面,内容也不会在10分钟后显示。

继承我的代码:

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";
    }
}

在这里,我为首次访问和多次访问设置了2个参数

// show popup  when scroll 50%
window.onscroll = function scroll(ev) {
    // first time visited
    if ((popUp.className==="closed" && window.innerHeight+window.scrollY) >= halfScreen && showOnce){
       startDelay();
       showOnce = false; 
    }
    // same user multiple time visited the site 
    else if((popUp.className==="" && window.innerHeight+window.scrollY) >= halfScreen && showOnce){
       slideUp();      
       showOnce = false; 
    }
};

// close button when click close
for(var i = 0; i<closePopUp.length; i++){
    closePopUp[i].addEventListener('click', function(event) {
        slideDown();
    });
}

当我第一次打开页面时,内容会显示,当我选择关闭内容时,它会获得closed课程(它的正确)。但是在我滚动到顶部刷新页面后,其显示的间隔为(也是正确的)。 问题: 1.如果我刷新页面顶部,内容将立即显示。 2.刷新并滚动并关闭内容后。内容再次显示。

它喜欢它再次读取功能?请帮忙

0 个答案:

没有答案