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 相关文章推荐
让焦点自动跳转
Jul 01 Javascript
用脚本调用样式的几种方法
Dec 09 Javascript
js或css文件后面跟参数的原因说明
Jan 09 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
Mar 03 Javascript
详解JavaScript基于面向对象之继承实例
Dec 16 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
Jan 22 Javascript
JavaScript获取中英文混合字符串长度的方法示例
Feb 04 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
Dec 15 Javascript
微信小程序实现签到功能
Oct 31 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
Nov 07 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
Sep 24 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实现的链式队列结构示例
2017/09/15 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
如何基于python操作excel并获取内容
2019/12/24 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
百联网上商城:i百联
2017/01/28 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
校本教研工作方案
2014/01/14 职场文书
高三自我评价
2014/02/01 职场文书
个人校本研修方案
2014/05/26 职场文书
结婚典礼致辞
2015/07/28 职场文书
数学复习课教学反思
2016/02/18 职场文书
导游词之山海关
2019/12/10 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript