<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding:0;}
.head{font-size:12px;padding:6px 0 0 10px;}
#login_box{width:300px;height:150px;background:#eee;
border:1px solid #ccc;position:absolute;left:50%;top:50%;margin-left:-150px;margin-top:-75px;display:none;}
#login_box p{height:20px;border-bottom:1px solid #ccc;font-size:12px;padding:6px 0 0 5px;font-weight:bold;}
#close{width:14px;height:14px;background:url(close.png) no-repeat;position:absolute;right:4px;top:6px;}
</style>
<script>
window.onload=function(){
var login_btn=document.getElementById('login'),
login_box=document.getElementById('login_box'),
close=document.getElementById('close');
// 封装添加事件监听程序
function addEvent(ele,type,hander){
if(ele.addEventListener){//dom2级事件处理程序判断
ele.addEventListener(type,hander,false);
}else if(ele.attachEvent){//IE事件处理程序判断
ele.attachEvent('on'+type,hander);
}else{//DOM0级事件处理程序判
ele['on'+type]=hander;
}
}
// 显示登录层函数
function showLogin(){
login_box.style.display='block';
}
// 隐藏登录层函数
function hideLogin(){
login_box.style.display='none';
}
//点击登录按钮显示登录层
// 执行代码
addEvent(login_btn,'click',showLogin);//login_btn这个是怎么理解?
//点击关闭按钮隐藏登录层
// 执行代码
addEvent(close,'click',hideLogin);
}
</script>
</head>
<body>
<div>亲,您好!<input type="button" value="登 录" id="login"></div>
<div id="login_box">
<p>用户登录</p><span id="close"></span>
</div>
</body>
</html>
因为时间冒泡了呀,你用close来hideLogin的同时冒泡到了 login_box来showLogin了,你对hideLogin函数里加一句阻止事件冒泡就可以解决这个问题了
函数addEvent有三个参数(ele,type,hander),这里的login_btn是第一个参数,就是需要添加时间的元素