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 相关文章推荐
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
JavaScript事件委托实例分析
May 26 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 Javascript
Django与Vue语法的冲突问题完美解决方法
Dec 14 Javascript
纯JS实现可用于页码更换的飞页特效示例
May 21 Javascript
微信小程序实现无限滚动列表
May 29 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
Oct 30 Javascript
在antd Table中插入可编辑的单元格实例
Oct 28 Javascript
JavaScript实现10秒后再次获取验证码
Dec 02 Javascript
利用node.js开发cli的完整步骤
Dec 29 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代码
2008/04/09 PHP
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
Laravel实现表单提交
2017/05/07 PHP
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
python按照多个条件排序的方法
2019/02/08 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
婚礼答谢礼品
2015/01/20 职场文书
个人工作表现自我评价
2015/03/06 职场文书
部队2015年终工作总结
2015/04/02 职场文书
办公室禁烟通知
2015/04/23 职场文书
2015年司法所工作总结
2015/04/27 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
消防宣传标语大全
2015/08/03 职场文书