js循环改变div颜色具体方法


Posted in Javascript onJune 25, 2013

在使用javascript过程中,想循环遍历一个数组,经常使用的语法有两种:

 for (var i; i < array.length; i++) {
     statement;
 }
 for (var i in array) {
     statement;
 }

这两种用法看起来能做同样的事情,但实际上两个循环的循环次数一般是不一样的。
源码如下:
 <!DOCTYPE html>
 <html>
 <head>
 <style>
 #button{text-align:center;}
 #outer{width:330px; height:100px; margin:10px auto;}
 #outer div{float:left;width:100px;height:100px;margin:0px 5px;background:black;}
 </style> <script>
 window.onload = function() {
     var obutton = document.getElementsByTagName("button")[0];
     var outer = document.getElementById("outer");
     var outerDiv = outer.getElementsByTagName("div");
     obutton.onclick = function() {
         for(var p in outerDiv) outerDiv[p].style.background = "red";
     };
 };
 </script>
 </head>
 <body>
 <div id="button">
 <button>点击变红色</button>
 </div>
 <div id="outer">
     <div></div>
     <div></div>
     <div></div>
 </div>
 </body>
 </html>

这段代码用了 for - in 语句做循环,看上去没有问题。
可是在浏览器调试的时候,会报错:
"Uncaught TypeError: Cannot set property 'background' of undefined"
为什么会这样呢?
如果我们把 stament 的内容改一下,就会发现问题了:
 for(var p in outerDiv) alert(p);
结果输出是:0 1 2 length item
所以,当 property 取到 length 和 item 时,再试图用调用 style 方法,当然就 undefined 了。 修改如下:

 <!DOCTYPE html>
 <html>
 <head>
 <style>
 #button{text-align:center;}
 #outer{width:330px; height:100px; margin:10px auto;}
 #outer div{float:left;width:100px;height:100px;margin:0px 5px;background:black;}
 </style> <script>
 window.onload = function() {
     var obutton = document.getElementsByTagName("button")[0];
     var outer = document.getElementById("outer");
     var outerDiv = outer.getElementsByTagName("div");
     obutton.onclick = function() {
         for (var i = 0; i < outerDiv.length; i++){
             outerDiv[i].style.background = "red";
         }
     };
 };
 </script>
 </head>
 <body>
 <div id="button">
 <button>点击变红色</button>
 </div>
 <div id="outer">
     <div></div>
     <div></div>
     <div></div>
 </div>
 </body>
 </html>
Javascript 相关文章推荐
个人总结的一些关于String、Function、Array的属性和用法
Jan 10 Javascript
js+xml生成级联下拉框代码
Jul 24 Javascript
基于Three.js插件制作360度全景图
Nov 29 Javascript
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
vue 添加vux的代码讲解
Nov 30 Javascript
微信小程序实现倒计时调用相机自动拍照功能
Jun 10 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
Jul 04 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
Vue中对拿到的数据进行A-Z排序的实例
Sep 25 Javascript
vue前后分离调起微信支付
Jul 29 Javascript
js仿京东放大镜效果
Aug 09 Javascript
详解JS WebSocket断开原因和心跳机制
May 07 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 #Javascript
js操作iframe的一些方法介绍
Jun 25 #Javascript
动态获取复选框checkbox选中个数的jquery代码
Jun 25 #Javascript
JQuery在页面中添加和除移DOM示例代码
Jun 24 #Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
Jun 24 #Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 #Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
Jun 24 #Javascript
You might like
php生成数字字母的验证码图片
2015/07/14 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
node.js超时timeout详解
2014/11/26 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
python用插值法绘制平滑曲线
2021/02/19 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
python 列表推导式使用详解
2019/08/29 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
水利学院求职自荐书
2014/02/01 职场文书
降消项目实施方案
2014/03/30 职场文书
《社戏》教学反思
2014/04/15 职场文书
董事长助理工作职责
2014/06/08 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
自我检讨报告
2015/01/28 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python