现在的效果是三个红色的小div点击哪个就哪个就变成黄色 同时其它的div都变成红色 现在想完善一下 在上面这个基础上 点击哪个div两次 还让它还原成原来的颜色 这个效果怎么弄呢?<!DOCTYPE html><html><head> <title></title> <style type="text/css"> #head{width: 400px;height: 500px;background-color: blue;margin: 0 auto;} #div1,#div2,#div3{width: 100px;height: 80px;background-color: red;} </style> <script type="text/javascript"> window.onload=function(){ var oDiv1=document.getElementById('head'); var oDiv=oDiv1.getElementsByTagName('div') for(i=0;i<oDiv.length;i++){ oDiv[i].onclick=function(){ for(j=0;j<oDiv.length;j++){ oDiv[j].style.backgroundColor="red" this.style.backgroundColor="yellow" } } } } </script></head><body><div id="head"> <div id="div1"></div><br /> <div id="div2"></div><br /> <div id="div3"></div></div></body></html>
1 回答
心有法竹
TA贡献1866条经验 获得超5个赞
测试完毕,来得晚了点。代码的关键解析在最下面。
<!DOCTYPE html><html><head> <title></title> <style type="text/css"> #head{width: 400px;height: 500px;background-color: blue;margin: 0 auto;} #div1,#div2,#div3{width: 100px;height: 80px;background-color: red;} </style> <script type="text/javascript"> window.onload = function(){ var oDiv1 = document.getElementById('head'); var oDiv = oDiv1.getElementsByTagName('div') for(i = 0; i < oDiv.length; i++){ oDiv[i].onclick=function(){ for(j=0; j<oDiv.length; j++){ if (this.getAttribute("style") == "background-color: yellow;") { this.style.backgroundColor = "red"; } else { oDiv[j].style.backgroundColor = "red"; this.style.backgroundColor = "yellow"; } } } } } </script></head><body><div id="head"> <div id="div1"></div><br /> <div id="div2"></div><br /> <div id="div3"></div></div></body></html>
重点在于这边,当自身被点中后,如果style是黄色,则改变自身,否则就按旧有逻辑走:
for(j=0; j<oDiv.length; j++){ if (this.getAttribute("style") == "background-color: yellow;") { this.style.backgroundColor = "red"; } else { oDiv[j].style.backgroundColor = "red"; this.style.backgroundColor = "yellow"; } }
以及,代码格式希望注意一下,别让人读起来费劲,反正最后可以压缩。
添加回答
举报
0/150
提交
取消