我要的是只要光标还在wrap上就不触发onmouseout.
现在是光标移到a链接上都触发onmouseout.
<!doctype HTML>
<html>
<head>
<title>scroll</title>
<style type="text/css">
#box{width:400px;height:143px;overflow:hidden;position:relative;float:left}
ul{position:absolute;left:0;top:0;margin:0px}
#slider{width:10px;height:143px;background:#ccc;float:left;position:relative}
#slider_btn{position:absolute;top:0;left:0;height:30px;width:10px;background:orange}
#wrap{background:orange;padding:10px 0}
#wrap a{background:red}
#box{background:blue}
</style> </head>
<body> <div id="wrap">
<a href="">sdsad</a>
</div>
<div id="box">sdsd</div>
<script type="text/javascript">
var $ = function(id){return document.getElementById(id)};
function aa(){
$("box").style.display = "block";
console.log("aa")
}
function bb(){
$("box").style.display = "none";
console.log("bb")
}
$("wrap").onmouseover = function(e){
aa();
}
$("wrap").onmouseout = function(e){
bb();
}
</script>
</body>
</html>
现在是光标移到a链接上都触发onmouseout.
<!doctype HTML>
<html>
<head>
<title>scroll</title>
<style type="text/css">
#box{width:400px;height:143px;overflow:hidden;position:relative;float:left}
ul{position:absolute;left:0;top:0;margin:0px}
#slider{width:10px;height:143px;background:#ccc;float:left;position:relative}
#slider_btn{position:absolute;top:0;left:0;height:30px;width:10px;background:orange}
#wrap{background:orange;padding:10px 0}
#wrap a{background:red}
#box{background:blue}
</style> </head>
<body> <div id="wrap">
<a href="">sdsad</a>
</div>
<div id="box">sdsd</div>
<script type="text/javascript">
var $ = function(id){return document.getElementById(id)};
function aa(){
$("box").style.display = "block";
console.log("aa")
}
function bb(){
$("box").style.display = "none";
console.log("bb")
}
$("wrap").onmouseover = function(e){
aa();
}
$("wrap").onmouseout = function(e){
bb();
}
</script>
</body>
</html>
<!doctype HTML>
<html>
<head>
<title>scroll</title>
<style type="text/css">
#box{width:400px;height:143px;overflow:hidden;position:relative;float:left}
ul{position:absolute;left:0;top:0;margin:0px}
#slider{width:10px;height:143px;background:#ccc;float:left;position:relative}
#slider_btn{position:absolute;top:0;left:0;height:30px;width:10px;background:orange}
#wrap{background:orange;padding:10px 0}
#wrap a{background:red}
#box{background:blue}
</style> </head>
<body> <div id="wrap">
<a href="">sdsad</a>
</div>
<div id="box">sdsd</div>
<script type="text/javascript">
var $ = function(id){return document.getElementById(id)};
function aa(){
$("box").style.display = "block";
console.log("aa")
}
function bb(){
$("box").style.display = "none";
console.log("bb")
}
$("wrap").onmouseover = function(e){
aa();
}
$("wrap").onmouseout = function(e){
var ev = getEvent();
var obj = ev.toElement || ev.relatedTarget;
if(obj==this) bb();
else{
if(!this.contains(obj)) bb();
else return false;
}
}if(typeof(HTMLElement)!="undefined")
HTMLElement.prototype.contains = function(obj) {
if(obj==this) return true;
while(obj=obj.parentNode) if(obj==this) return true;
return false;
}
function getEvent() {
if (document.all) return window.event;
func = getEvent.caller;
while (func != null) {
var arg0 = func.arguments[0];
if (arg0) {
if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
return arg0;
}
}
func = func.caller;
}
return null;
} </script>
</body>
</html>
e.cancelBubble=true;
} else {
e.stopPropagation();
}
<html>
<head>
<title>scroll</title>
<style type="text/css">
#box{width:400px;height:143px;overflow:hidden;position:relative;float:left;display:none}
ul{position:absolute;left:0;top:0;margin:0px}
#slider{width:10px;height:143px;background:#ccc;float:left;position:relative}
#slider_btn{position:absolute;top:0;left:0;height:30px;width:10px;background:orange}
#wrap{background:orange;padding:10px 0}
#wrap a{background:red}
#box{background:blue}
</style>
</head>
<body>
<div id="wrap">
<a href="">sdsad</a>
</div>
<div id="box">sdsd</div>
<script type="text/javascript">
var $ = function(id){
return document.getElementById(id)
};
function aa(){
$("box").style.display = "block";
console.log("aa")
}
function bb(){
$("box").style.display = "none";
console.log("bb")
}
function hasChild(elem1, elem2){
var childs = elem1.getElementsByTagName('*');
for(var i = 0, len = childs.length; i < len; i++){
if(elem2 === childs[i]){
return true;
}
}
return false;
}
$("wrap").onmouseover = function(e){
var event = e || window.event,
target = event.target || event.srcElement,
relatedTarget = event.relatedTarget || event.fromElement;
if(target === this && !hasChild(this,relatedTarget)){
aa();
}
}
$("wrap").onmouseout = function(e){
var event = e || window.event,
target = event.target || event.srcElement,
relatedTarget = event.relatedTarget || event.toElement;
if(target === this && !hasChild(this,relatedTarget)){
bb();
}
}
</script>
</body>
</html>
onmouseout并不调用aa(),我也没处理onmouseover
<html>
<head>
<title>scroll</title>
<style type="text/css">
#box{width:400px;height:143px;overflow:hidden;position:relative;float:left;display:none}
ul{position:absolute;left:0;top:0;margin:0px}
#slider{width:10px;height:143px;background:#ccc;float:left;position:relative}
#slider_btn{position:absolute;top:0;left:0;height:30px;width:10px;background:orange}
#wrap{background:orange;padding:10px 0}
#wrap a{background:red}
#box{background:blue}
</style>
</head>
<body>
<div id="wrap">
<a href="">sdsad</a>
</div>
<div id="box">sdsd</div>
<script type="text/javascript">
var $ = function(id){
return document.getElementById(id)
};
function aa(){
$("box").style.display = "block";
console.log("aa")
}
function bb(){
$("box").style.display = "none";
console.log("bb")
}
function hasChild(elem1, elem2){
var childs = elem1.getElementsByTagName('*');
for(var i = 0, len = childs.length; i < len; i++){
if(elem2 === childs[i]){
return true;
}
}
return false;
}
$("wrap").onmouseover = function(e){
var event = e || window.event,
target = event.target || event.srcElement,
relatedTarget = event.relatedTarget || event.fromElement;
if(!this.overStatus && relatedTarget !== this && !hasChild(this,relatedTarget)){
aa();
this.overStatus = true;
}
}
$("wrap").onmouseout = function(e){
var event = e || window.event,
target = event.target || event.srcElement,
relatedTarget = event.relatedTarget || event.toElement;
if(this.overStatus && relatedTarget !== this &&!hasChild(this,relatedTarget)){
bb();
delete this.overStatus;
}
}
</script>
</body>
</html>
<head>
<title>scroll</title>
<style type="text/css">
#box{width:400px;height:143px;overflow:hidden;position:relative;float:left}
ul{position:absolute;left:0;top:0;margin:0px}
#slider{width:10px;height:143px;background:#ccc;float:left;position:relative}
#slider_btn{position:absolute;top:0;left:0;height:30px;width:10px;background:orange}
#wrap{background:orange;width:300px;padding:10px 0}
#wrap a{background:red}
#box{background:blue}
#test{position:absolute;top:300px;left:0;}
</style> </head>
<body> <div id="wrap">
<a href="">sdsad</a>
</div>
<div id="test" style="display"></div>
<div id="box">sdsd</div>
<script type="text/javascript">
var $ = function(id){return document.getElementById(id)};
function aa(){
$("box").style.display = "block";
$("test").innerHTML="aa";
}
function bb(){
$("box").style.display = "none";
$("test").innerHTML="bb";
}
$("wrap").onmouseover = function(e){
aa();
}
$("wrap").onmouseout = function(e){
bb();
}
</script>
</body>
</html>
此外,console.log是什么用法?为什么我在我的DW上实验结果是未定义?盼解释。
if((!this.overStatus) && (relatedTarget !== this) && (!hasChild(this,relatedTarget)))写成这样能看清楚不?!this.overStatus是多余的,可以删除。
看看这段代码吧
<!doctype HTML>
<html>
<head>
<title>scroll</title>
<style type="text/css">
#box{width:400px;height:143px;overflow:hidden;position:relative;float:left;display:none}
ul{position:absolute;left:0;top:0;margin:0px}
#float{width:30px;background:orange;height:80px;position:absolute;top:50%;left:0;margin-top:-30px}
#con{width:100px;background:red;height:120px;position:absolute;top:50%;left:-100px;margin-top:-30px}
#con a{display:block;height:25px;background:yellow;margin-top:15px}
#box{width:100px;height:100px;background:orange;margin-top:50px}
</style>
</head>
<body id="body">
<div id="links">
<a href="">sdsad</a>
<a href="">sdsad</a>
<a href="">sdsad</a>
</div>
<div id="box" style="display:none"></div>
<div id="float">浮动层</div>
<div id="con">
<a href=""></a>
<a href=""></a>
<a href=""></a>
</div>
<script type="text/javascript">
var $ = function(id){
return document.getElementById(id)
}
$("links").onmouseover = function(e){
var e = e || window.event;
var related = e.relatedTarget || e.fromElement;
if(related != this && !func(related,this)){
$("box").style.display = "block";
//console.log("23")
}
}
function func(e,elem){
var elem = elem.getElementsByTagName("*");
for(var i=0;i<elem.length; i++){
if(e == elem[i]){
return true;
}
}
return false;
}
$("links").onmouseout = function(e){
var e = e || window.event;
var related = e.relatedTarget || e.fromElement;
if(related != this && !func(related,this)){
//console.log("sd")
$("box").style.display = "none";
}
}
</script>
</body>
</html>