首页 新闻 搜索 专区 学院

亲们解决一下代码bug问题

0
[已解决问题] 解决于 2013-10-12 11:06

亲们,我想点击每一个div他会变成红色,再点击下一个,上一个还会变成原来的颜色,可是当点击两下div的时候,他们几个的颜色都变红色了,麻烦大仙帮我解决一下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
.box{ color:#03F; font-size:36px}
.cur{ color:#F00}
</style>

</head>

<body>
<div class="oDivs" id="oDivs">
<div class="box">11111</div>
<div class="box">22222</div>
<div class="box">33333</div>

</div>
</body>

<script type="text/javascript">
var oDivs=document.getElementsByClassName('box')
for(var i=0;i<oDivs.length;i++){
oDivs.item(i).onclick=function(){
oldColor=this.style.color;
for(var i=0;i<oDivs.length;i++){
oDivs.item(i).style.color=oldColor
}
this.style.color='red'
}
}

 

</script>
</html>

xiaoleilei的主页 xiaoleilei | 初学一级 | 园豆:80
提问于:2013-09-26 15:10
< >
分享
最佳答案
0

在循环里面在加一个双击事件就行了嘛

oDivs.item(i).ondblclick=function(){
for (var i = 0; i < oDivs.length; i++) {
oDivs.item(i).style.color = 'red';
}
}

奖励园豆:5
x.y. | 菜鸟二级 |园豆:226 | 2013-09-26 16:37
其他回答(3)
0

能用jquery吗,用jquery就容易多了

|WinKi| | 园豆:669 (小虾三级) | 2013-09-26 15:27

得用js嘿嘿

支持(0) 反对(0) xiaoleilei | 园豆:80 (初学一级) | 2013-09-26 15:52
0

你第一次单击的时候,被单击的元素是蓝色,oldColor=this.style.color;记住了这个蓝色,除了被单击的元素变为红色,其他的都是oldColor,即蓝色。

 

再一次单击这个元素,oldColor=this.style.color;则记住了红色,即oldColor变为红色,这样循环一下,所有的都变成红色,this.style.color='red'也就没有了意义。

 

解决办法oldColor在外面声明。

挨踢男.Orz | 园豆:387 (菜鸟二级) | 2013-09-26 17:20
0

直接把定义一个样式比如.myclass{控件样式定义}

在JS函数里面执行“document.getElementById("控件ID").className = "myclass";”

Elaine00 | 园豆:294 (菜鸟二级) | 2013-10-02 10:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册