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 相关文章推荐
js innerHTML 的一些问题的解决方法
Jun 22 Javascript
由document.body和document.documentElement想到的
Apr 13 Javascript
js 验证密码强弱的小例子
Mar 21 Javascript
js去字符串前后空格5种实现方法及比较
Apr 03 Javascript
jquery获取子节点和父节点的示例代码
Sep 10 Javascript
Jquery 数组操作大全个人总结
Nov 13 Javascript
jquery操作select详解(取值,设置选中)
Feb 07 Javascript
JS获取及验证开始结束日期的方法
Aug 20 Javascript
详解Node.js:events事件模块
Nov 24 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
vue动态禁用控件绑定disable的例子
Oct 28 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 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中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
python修改list中所有元素类型的三种方法
2018/04/09 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
python3 拼接字符串的7种方法
2018/09/12 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
python实现UDP协议下的文件传输
2020/03/20 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
python实现邮件循环自动发件功能
2020/09/11 Python
造型师求职自荐信
2013/09/27 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
深入理解go缓存库freecache的使用
2022/02/15 Golang
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
Nginx实现负载均衡的项目实践
2022/03/18 Servers