返回信息流<html>
<body bgcolor="white">
<!-- 引入jQuery库 -->
<script src="common/jquery-1.2.6.min.js" type="text/javascript"></script>
<div id="out1" style="width:300px;height:200px;border:1px solid black;">
<!-- 静态的DIV -->
<div id="in1" style="width:300px;height:100px;">in1</div>
<div id="in2" style="width:300px;height:100px;">in2</div>
</div>
<div id="out2" style="width:300px;height:200px;border:1px solid black;">
<!-- 动态生成DIV -->
</div>
<input type="button" id="button1" value="点击我生成div!"><br>
<input type="button" id="button2" value="更改div内的div的onmouseover属性!">
<script language="javascript">
var count = 1;
$("#button1").click(function(){
var d = document.createElement("div");
d.innerHTML = "生成的div:" + count;
d.style.height = "25px";
count++;
$("#out2").append(d);
});
//延迟计时器
var timer;
$("#button2").click(function(evt){
$("div div").mouseover(function(evt){
evt = evt || window.event; //取事件源 火狐||IE
//延迟,1秒后才执行myShow方法。
function myShow()
{
var src = evt.target || evt.srcElement; //火狐||IE
$(src).css("background-color","#cccccc");
}
timer = setTimeout(myShow,1000);
});
$("div div").mouseout(function(evt)
{
//取消定时器
clearTimeout(timer);
evt = evt || window.event;
var src = evt.target || evt.srcElement;
$(src).css("background-color","#ffffff");
});
});
</script>
</body>
</html>
自己写的一段代码,
就是点击第二个按钮后,设置2个外层div的里层的div的onmouseover、onmuoseout属性,让鼠标在上面待超过一秒后改变其背景颜色,鼠标移出后背景色恢复白色。
问题出在这里:
第一次点击“更改div内的div的onmouseover属性”按钮后运行状况没问题,
但再点一次“更改div内的div的onmouseover属性”按钮后,貌似onmouseout就不起作用了,各div的背景颜色的改变不听控制了,鼠标移出后背景颜色还是不变回来。但是如果去掉定有关时器的代码就又不会出问题了。
真看不出来问题在哪了,请大家帮忙!
这是一条镜像帖。来源:北邮人论坛 / www-technology / #8858同步于 2009/10/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
[求助]这段JS代码的问题出在哪里?(用了jQuery库)
eminemheaton
2009/10/21镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
后面的也不是不听话了。感觉就是你移到那个元素上面,然后过1S它就变灰了。
如果在这个期间,鼠标已经从该元素上移走了,那么就没有机会执行clearTimeout,所以就一直灰着。
【 在 ericyosho 的大作中提到: 】
: 比较好的方法是,当按下button2的时候,就把它变灰。这就是user friendly,而且让用户始终在可控的范围内。
谢谢,这是个解决方法
但还是不明白 为什么第一次点击点button2运行没问题
第二次点button2后,对已经设置过onmuouseover属性的div,取消定时器有时候就不起作用了
明明两次点击执行的代码都是一样的啊。。。
再给一点点小现象吧。
你每点一次button2,就会在原来的基础上,加上一个处理函数。
比如,我在变黑以前加了alert()语句,那么点过一次button2,就执行一次alert()
点过两次button2,就执行两次alert()。
我觉得和这个可能有点关系。