onmouseover怎么向onmouseout中传递变量?

时间:2022-11-06 08:06:34
例如onmouseover中创建了变量x,在onmouseout用一下这个变量就把它注销掉,如果直接在外部定义x为全局变量,整个程序全局变量太多了,我怕会对程序运行不利,所以就想有没有这种方法来实现,或者能不能临时创建一个全局变量,然后在其它函数调用后就把它注销掉?请高手指点.

8 个解决方案

#1


本帖最后由 net_lover 于 2010-04-08 08:47:27 编辑
定义一个全局变量。
var x;
如果其他事件不用,完全可以销毁的。其他事件的第一行就进行销毁

#2


引用 1 楼 net_lover 的回复:
定义一个全局变量。
var x;


up

#3


引用 1 楼 net_lover 的回复:
定义一个全局变量。
var x;
如果其他事件不用,完全可以销毁的。其他事件的第一行就进行销毁

这样不行啊,我有两个span,当鼠标移动span1上时调用变量x存了个信息,当鼠标移开时,调用了settimeout等待一秒钟读取变量x执行一个函数就over,问题是,在移开一秒前我又移到span2上,它会重新给x斌值,这样一来原先的settimeout执行函数时读取的x变量值就不对了啊?

#4


引用 3 楼 cys1791 的回复:
这样不行啊,我有两个span,当鼠标移动span1上时调用变量x存了个信息,当鼠标移开时,调用了settimeout等待一秒钟读取变量x执行一个函数就over,问题是,在移开一秒前我又移到span2上,它会重新给x斌值,这样一来原先的settimeout执行函数时读取的x变量值就不对了啊?


setTimeout的时候用个闭包把这个变量弄进去,外面的全局变量无论是改变了还是销毁了,都对这次操作无影响。。。

#5


可以定义一个全局变量,每次用到的时候就赋值,不用销毁也可以

#6


var x;
function mouseover{x=1;}
function mouseout{y=x;
setTimeout("f(y)",1000);
}

#7



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY>
  <span id="s1" style="background:#3fdddd;height:30px">222222222222222222</span>
  <span id="s2" style="background:#654322;height:30px">333333333333333333</span>
    <SCRIPT LANGUAGE="JavaScript">
  <!--
function createEventFunc(type) {
var x;
if (type === "over") {
return function(event){
x = 1;
};
}
if (type === "out") {
return function(event){
x = null;
};
}
}
document.getElementById("s1").onmouseover = createEventFunc("over");
document.getElementById("s2").onmouseover = createEventFunc("over");
document.getElementById("s1").onmouseout = createEventFunc("out");
document.getElementById("s2").onmouseout = createEventFunc("out");
  //-->
</SCRIPT>
 </BODY>
</HTML>

#8


上面的不行,这个试下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
 </HEAD>

 <BODY>
  <span id="s1" style="background:#3fdddd;height:30px">222222222222222222</span>
  <span id="s2" style="background:#654322;height:30px">333333333333333333</span>
    <SCRIPT LANGUAGE="JavaScript">
  <!--
function Func() {
var obj = {
over:function(event){
alert(this.x);
this.x = 1;
},
out:function(event){
alert(this.x);
this.x = undefined;
}
};
this.createEventFunc = function(type) {
if (type === "over") {
return obj.over;
}
if (type === "out") {
return obj.out;
}
}
}
var func = new Func();
document.getElementById("s1").onmouseover = func.createEventFunc("over");
document.getElementById("s2").onmouseover = func.createEventFunc("over");
document.getElementById("s1").onmouseout = func.createEventFunc("out");
document.getElementById("s2").onmouseout = func.createEventFunc("out");
  //-->
</SCRIPT>
 </BODY>
</HTML>

#1


本帖最后由 net_lover 于 2010-04-08 08:47:27 编辑
定义一个全局变量。
var x;
如果其他事件不用,完全可以销毁的。其他事件的第一行就进行销毁

#2


引用 1 楼 net_lover 的回复:
定义一个全局变量。
var x;


up

#3


引用 1 楼 net_lover 的回复:
定义一个全局变量。
var x;
如果其他事件不用,完全可以销毁的。其他事件的第一行就进行销毁

这样不行啊,我有两个span,当鼠标移动span1上时调用变量x存了个信息,当鼠标移开时,调用了settimeout等待一秒钟读取变量x执行一个函数就over,问题是,在移开一秒前我又移到span2上,它会重新给x斌值,这样一来原先的settimeout执行函数时读取的x变量值就不对了啊?

#4


引用 3 楼 cys1791 的回复:
这样不行啊,我有两个span,当鼠标移动span1上时调用变量x存了个信息,当鼠标移开时,调用了settimeout等待一秒钟读取变量x执行一个函数就over,问题是,在移开一秒前我又移到span2上,它会重新给x斌值,这样一来原先的settimeout执行函数时读取的x变量值就不对了啊?


setTimeout的时候用个闭包把这个变量弄进去,外面的全局变量无论是改变了还是销毁了,都对这次操作无影响。。。

#5


可以定义一个全局变量,每次用到的时候就赋值,不用销毁也可以

#6


var x;
function mouseover{x=1;}
function mouseout{y=x;
setTimeout("f(y)",1000);
}

#7



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY>
  <span id="s1" style="background:#3fdddd;height:30px">222222222222222222</span>
  <span id="s2" style="background:#654322;height:30px">333333333333333333</span>
    <SCRIPT LANGUAGE="JavaScript">
  <!--
function createEventFunc(type) {
var x;
if (type === "over") {
return function(event){
x = 1;
};
}
if (type === "out") {
return function(event){
x = null;
};
}
}
document.getElementById("s1").onmouseover = createEventFunc("over");
document.getElementById("s2").onmouseover = createEventFunc("over");
document.getElementById("s1").onmouseout = createEventFunc("out");
document.getElementById("s2").onmouseout = createEventFunc("out");
  //-->
</SCRIPT>
 </BODY>
</HTML>

#8


上面的不行,这个试下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
 </HEAD>

 <BODY>
  <span id="s1" style="background:#3fdddd;height:30px">222222222222222222</span>
  <span id="s2" style="background:#654322;height:30px">333333333333333333</span>
    <SCRIPT LANGUAGE="JavaScript">
  <!--
function Func() {
var obj = {
over:function(event){
alert(this.x);
this.x = 1;
},
out:function(event){
alert(this.x);
this.x = undefined;
}
};
this.createEventFunc = function(type) {
if (type === "over") {
return obj.over;
}
if (type === "out") {
return obj.out;
}
}
}
var func = new Func();
document.getElementById("s1").onmouseover = func.createEventFunc("over");
document.getElementById("s2").onmouseover = func.createEventFunc("over");
document.getElementById("s1").onmouseout = func.createEventFunc("out");
document.getElementById("s2").onmouseout = func.createEventFunc("out");
  //-->
</SCRIPT>
 </BODY>
</HTML>