javascript之循环保存数值
javascript之循环保存数值
语言都是相通的,这句话在我学javascript时有的深刻的意识.js中的for循环与java中的for循环有很大相似之处.
先看下面这段代码
for(var i=0;i<a.length;i++){
a[i].onclick=function(){
console.log(i);
};
}
onclick为点击,第二行代码为当点击是发生的事件
在js中,假设我之前的代码都正确且a已经声明过,a.length为2,这时候的控制台输出是什么?
我之前以为应该是0,1.
然而控制台给出的结果是2.
这是js中常见的一个错误,经常发生.为什么?
分析:i=0,i<2,进入循环后,i++变为1
i=1,i<2,进入循环后,i++变为2
i=2,i<2不成立,不进入循环,此时i为2
当程序运行时,for循环以极其快的速度运行结束,i瞬间变为2.当我点击a[i]时,此时的事件才发生,而i已经为2.所以控制台输出为2
再看一段代码:
for(var i=0;i<a.length;i++){
a[i].onclick=function(){
console.log(a[i]);
};
}
还是像上面那样分析,
i=0,i<2,进入循环后,i++变为1
i=1,i<2,进入循环后,i++变为2
i=2,i<2不成立,不进入循环,此时i为2
当程序运行时,for循环以极其快的速度运行结束,i瞬间变为2.当我点击a[i]时,此时的事件才发生,而i已经为2.a[2]是不存在的,所以报错.
如果我想存储住这个i的数值,怎么样才能通过i的值来调用a[i],让控制台输出当前的a[i]的值?这个时候我们需要用一个属性来保存这个i的值,假设我设这个属性为index,那么这个代码怎么写呢?又应该如何来调用呢?再看下面这段代码
for(var i=0;i<a.length;i++){
a[i].index=i;
a[i].onclick=function(){
console.log(this.index);
};
}
运行之后的结果为我点击a[0]时控制台输出0,点击a[1]时控制台输出1.
通过以上的例子,我们能得知,要给a[i]一个属性来保存这个值以便调用,为什么这样?
a[i].index=i这句话我们可以这么理解
a[0].index=0
a[1].index=1
这就是我把每一个a[i]的index都给他一个值,这样当我想选择谁的时候,谁就可以被我选择。a[i]就是一个对象,index就是属性。
万物皆对象,对象是谁,你操纵谁,你控制谁。
javascript之循环保存数值的更多相关文章
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
c#封装DBHelper类 public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...
- JavaScript的循环语句
JavaScript的循环语句 1.JavaScript的循环语句 (1)for循环语句 - 循环代码块一定的次数: (2)for/in循环语句 - 循环遍历对象的属性: (3)while循环语句 - ...
- JavaScript while 循环
JavaScript while 循环的目的是为了反复执行语句或代码块. 只要指定条件为 true,循环就可以一直执行代码块. while 循环 while 循环会在指定条件为真时循环执行代码块. 语 ...
- JavaScript进阶(六)用JavaScript读取和保存文件
用JavaScript读取和保存文件 因为Google还不提供同步插件数据的功能,所以导入和导出插件配置就必须和文件打交道了.而出于安全原因,只有IE才提供访问文件的API:但随着HTML 5的到来, ...
- matlab循环保存dat文件
将数据保存为dat文件 这里有两种方法,第一种是: save filename dataname; 这种方法书写简单,但是功能也很简单.这里的filename就是死的filenam,即filename ...
- JavaScript for循环实现表格隔行变色
本代码主要演示的是for循环, <!doctype html> <html lang="en"> <head> <meta charset ...
- JavaScript数组循环
JavaScript数组循环 一.前言 利用Javascript map(),reduce()和filter()数组方法可以遍历数组.而不是积累起来for循环和嵌套来处理列表和集合中的数据,利用这些方 ...
- 一篇文章图文并茂地带你轻松学完 JavaScript 事件循环机制(event loop)
JavaScript 事件循环机制 (event loop) 本篇文章已经默认你有了基础的 ES6 和 javascript语法 知识. 本篇文章比较细致,如果已经对同步异步,单线程等概念比较熟悉的读 ...
- JavaScript 事件循环
JavaScript 事件循环 事件循环 任务队列 async/await 又是如何处理的呢 ? 定时器问题 阻塞还是非阻塞 实际应用案例 拆分 CPU 过载任务 进度指示 在事件之后做一些事情 事件 ...
随机推荐
- jQuery进阶
复习: jq无论如何都是一个集合 jq是一个包装集 var arr=$("div").get( )会将所有的DOM对象转换成真正的数组, get( )里边没传参数 兄弟元素: 只要 ...
- java面向对象---对象容器
泛型类--ArrayList<>; 2.对象数组中的每个元素都是对象的管理者而并非对象本身!!!!! 3.java类的基本数据类型 基本数据类型 包装类 byte Byte short S ...
- Dev控件GridView单元格绑定控件
Dev控件GridView单元格绑定控件 //文本按钮 RepositoryItemButtonEdit btnFields = new RepositoryItemButtonEdit();//创建 ...
- [转]CSS 类名的单词连字符:下划线还是横杠?
问题 CSS 类或 ID 命名时单词间连接通常有这几种写法: 驼峰式: solutionTitle.solutionDetail 用横杠连接: solution-title.solution-deta ...
- Linux查看tomcat 控制台输出命令
用远程登陆客户端登陆linux进入tomcat/logs/文件夹下键入指令:tail -f catalina.out
- 机器学习——k-近邻算法
k-近邻算法(kNN)采用测量不同特征值之间的距离方法进行分类. 优点:精度高.对异常值不敏感.无数据输入假定 缺点:计算复杂度高.空间复杂度高 使用数据范围:数值型和标称型 工作原理:存在一个样本数 ...
- 第五章 --- 关于Javascript 设计模式 之 发布-订阅模式
先来个最简单的 发布订阅模式 document.body.addEventListener('click',function(){ alert(123); }); document.body.clic ...
- C#
1.类型推导 ; Console.WriteLine(age.GetType().ToString()); var 关键字还可以配合生成匿名类型,如: , Time = }: 如果有可以将对象转成JS ...
- C# 反射研究
概念 反射这东西,对于我这种小白,听起来总是觉得好大上的. 当初理解它费了一点时间,后来看了一句话,突然恍然大悟,“反射就跟B超一样,我们在不剖开人体的情况下想看清楚内部情况, 我们就通过发射超声波, ...
- XSS(跨站脚本攻击)的最全总结
从OWASP的官网意译过来,加上自己的理解,算是比较全面的介绍.有兴趣的可私下交流. XSS 跨站脚本攻击 ============================================== ...