求一段js代码打开页面div5秒弹出,点击关闭按钮后再次定时弹出

如题所述

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8"/>

<title>定时弹窗</title>

<style type="text/css">

html,body{

width:100%;

height:100%;

margin:0;

padding:0;

}

.box{

width:100%;

}

.tc-box{

width:25%;

margin:80px auto;

border:1px solid #f00;

text-align: center;

line-height: 150px;

}

</style>

</head>

<body>

<div class="box">

<div class="tc-box" id="tc">

<div class="tc-cont">我是弹窗内容</div>

<button id="btn">点击关闭</button>

</div>

</div>


<script type="text/javascript">

var btn = document.getElementById('btn');

btn.onclick = function(){

var tc = document.getElementById('tc');

tc.style.display = 'none';

}


function xs(){

var tc = document.getElementById('tc');

tc.style.display = 'block';

console.log('aaaaaaa');

}

var lia = window.setInterval(xs,5000);

</script>

</body>

</html>

点击关闭之后5秒就会自动弹出



上面的代码有点不太合理,下面代码优化了一下。

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8"/>

<title>定时弹窗</title>

<style type="text/css">

html,body{

width:100%;

height:100%;

margin:0;

padding:0;

}

.box{

width:100%;

}

.tc-box{

width:35%;

margin:80px auto;

border:1px solid #f00;

text-align: center;

line-height: 150px;

}

</style>

</head>

<body>

<div class="box">

<div class="tc-box" id="tc">

<div class="tc-cont">我是弹窗内容</div>

<button id="btn">点击关闭5秒后继续弹出</button>

<button id="btn1">点击关闭,不再弹窗</button>

</div>

</div>


<script type="text/javascript">

var btn = document.getElementById('btn');


function xs(){

var tc = document.getElementById('tc');

tc.style.display = 'block';

tc.classList.remove('on');

console.log('aaaaaaa');

}


btn.onclick = function(){

var tc = document.getElementById('tc');

tc.style.display = 'none'; 

var lia = window.setInterval('xs()',5000);

tc.classList.add('on'); //添加一个on类


if(tc.classList.contains('on') == true){ //查询类

function dsq(){

window.clearInterval(lia);

}


window.setTimeout(dsq,5000);

}

}


// 清除定时器

var btn1 = document.getElementById('btn1');

btn1.onclick = function(){

var tc = document.getElementById('tc');

tc.style.display = 'none';

}

</script>

</body>

</html>

因为一直弹窗会对浏览器产生很大的负荷,这里除了添加不再弹窗之外还优化了一下代码。

之前的代码是点击之后开始执行循环函数,但是不停止循环,不管弹窗是否显示的状态都会每5秒执行一次,这样明显不合理,应该是在你关闭弹窗之后5秒才执行。弹窗在显示状态不执行。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-08

问题分析:

首先来分析一下这个功能的两copy个步骤。

1、弹出:当页面初始化完毕后,等待N秒显示出div标签。

2、关闭:当div标签弹出后,再等待N秒后将其关闭。百

解决方案:

可以度使用JavaScript的setTimeout方法来做定时功能。

案例如下:

此案例设置页面初始化后5秒弹出div标签,再等5秒后关闭div标签。

HTML代码:

1

   

<div>我是DIV的内容</div>

   

CSS代码:


div{    width: 200px;    height: 200px;    line-height: 200px;    text-align: center;    background-color: #000;    color: #FFF;    display: none;}

   

JavaScript代码:

 
setTimeout(function(){    $('div').show(); //将DIV标签显示出来。    setTimeout(function(){        $('div').hide(); //将DIV标签隐藏。    }, 5000);}, 5000);

   

页面初始化时为空白,5秒后的效果为: