点击一个div显示另一个隐藏div几秒后隐藏
2个回答
展开全部
大概的思路就是
响应一个div的点击事件
设置一个延时执行任务
任务里隐藏另一个div
简单粗暴的实现如下:
<!DOCTYPE html>
<html>
<style>
/* 这些样式是为了容易看,跟需求没关系! */
div { padding: 20px; border: 1px solid #aaa; margin-bottom: 20px; cursor: pointer; }
</style>
<body>
<div id="div1">我是div1,点我呀点我呀。点一下就好了,不要点很多次!</div>
<div id="div2">我是div2,点了div1之后我过几秒就会隐藏!</div>
<script type="text/javascript">
// 1. 拿到div1,监听点击事件
document.getElementById('div1').onclick = function() {
// 点击div1之后会进这个函数!
console.log('div1被点了!');
// 2. 设置延时任务
setTimeout(function() {
// 过2000毫秒(2秒)会进来
console.log('div1被点之后过了2秒!');
// 3. 隐藏div2
// 隐藏有多种方式,一种就是设置display: none样式。
document.getElementById('div2').style.display = 'none';
}, 2000); // 最后这个2000是延时的时间,单位是毫秒
}
</script>
</body>
</html>
以上的实现有个问题就是每次点击div1都会去设置延时任务,虽然不影响体验,但在第二次点击之后其实是做了多余的事。解决办法就是只有第一次点击的时候设置延时任务。如果发现设置过了就不用设置了。
上面的<script>中的内容换成以下:
var hideDiv2Timer = null;
// 拿到div1,监听点击事件
document.getElementById('div1').onclick = function() {
// 点击div1之后会进这个函数!
console.log('div1被点了!');
// 如果已经设置过延时任务就不用再设置了
if (hideDiv2Timer !== null) {
return;
}
// 设置延时任务
hideDiv2Timer = setTimeout(function() {
// 过2000毫秒(2秒)会进来
console.log('div1被点之后过了2秒!');
// 隐藏div2
// 隐藏有多种方式,一种就是设置display: none样式。
document.getElementById('div2').style.display = 'none';
}, 2000); // 最后这个2000是延时的时间,单位是毫秒
}
展开全部
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>div显示隐藏</title>
</head>
<style type="text/css">
.div1{width: 100px;height: 100px;background: red;}
.div2{width: 100px;height: 100px;background: green;display: none;}
</style>
<body>
<div class="div1" onclick="changeCss()"></div>
<div class="div2" id="div2"></div>
</body>
<script type="text/javascript">
function changeCss(){
//获取div2
var div2 = document.getElementById("div2");
//div2显示
div2.style.display = "block";
//3秒后隐藏
setTimeout(function(){
div2.style.display = "none";
},3000);
}
</script>
</html>
做了一个简单的小例子,你看一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询