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的事件绑定(方便不支持js的时候)
Oct 01 Javascript
JavaScript继承学习笔记【新手必看】
May 10 Javascript
jQuery表单验证简单示例
Oct 17 Javascript
微信小程序 wx:key详细介绍
Oct 28 Javascript
Vuex利用state保存新闻数据实例
Jun 28 Javascript
原生js实现移动端触摸轮播的示例代码
Dec 22 Javascript
express+mockjs实现模拟后台数据发送功能
Jan 07 Javascript
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
Jan 24 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 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
文章推荐系统(三)
2006/10/09 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
Javascript实现单例模式
2016/01/24 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
python issubclass 和 isinstance函数
2019/07/25 Python
详解Python打包分发工具setuptools
2019/08/05 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
阿拉伯书店:Jamalon
2019/07/24 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
转预备党员政审材料
2014/02/06 职场文书
经理任命书模板
2014/06/06 职场文书
2016年元旦寄语
2015/08/17 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书