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之循环保存数值的更多相关文章

  1. c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)

    c#封装DBHelper类   public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...

  2. JavaScript的循环语句

    JavaScript的循环语句 1.JavaScript的循环语句 (1)for循环语句 - 循环代码块一定的次数: (2)for/in循环语句 - 循环遍历对象的属性: (3)while循环语句 - ...

  3. JavaScript while 循环

    JavaScript while 循环的目的是为了反复执行语句或代码块. 只要指定条件为 true,循环就可以一直执行代码块. while 循环 while 循环会在指定条件为真时循环执行代码块. 语 ...

  4. JavaScript进阶(六)用JavaScript读取和保存文件

    用JavaScript读取和保存文件 因为Google还不提供同步插件数据的功能,所以导入和导出插件配置就必须和文件打交道了.而出于安全原因,只有IE才提供访问文件的API:但随着HTML 5的到来, ...

  5. matlab循环保存dat文件

    将数据保存为dat文件 这里有两种方法,第一种是: save filename dataname; 这种方法书写简单,但是功能也很简单.这里的filename就是死的filenam,即filename ...

  6. JavaScript for循环实现表格隔行变色

    本代码主要演示的是for循环, <!doctype html> <html lang="en"> <head> <meta charset ...

  7. JavaScript数组循环

    JavaScript数组循环 一.前言 利用Javascript map(),reduce()和filter()数组方法可以遍历数组.而不是积累起来for循环和嵌套来处理列表和集合中的数据,利用这些方 ...

  8. 一篇文章图文并茂地带你轻松学完 JavaScript 事件循环机制(event loop)

    JavaScript 事件循环机制 (event loop) 本篇文章已经默认你有了基础的 ES6 和 javascript语法 知识. 本篇文章比较细致,如果已经对同步异步,单线程等概念比较熟悉的读 ...

  9. JavaScript 事件循环

    JavaScript 事件循环 事件循环 任务队列 async/await 又是如何处理的呢 ? 定时器问题 阻塞还是非阻塞 实际应用案例 拆分 CPU 过载任务 进度指示 在事件之后做一些事情 事件 ...

随机推荐

  1. MathType6.9按章节插入编号

    先插入Chapter,然后修改break主要是该起始编号. 这样话会用一行红色红代码,选中,邮件字体,然后在格式里选择隐藏就好了,这个不能删除.

  2. CSS实现文字省略

    1.首先给用于放文本的标签元素设置一个宽度值,并设置溢出属性overflow为溢出隐藏. width: 245px;/*一定要设置固定宽度*/ overflow: hidden;/*不显示超过对象尺寸 ...

  3. javascript 原型查找 再次试探~

    前言 我们知道 对象字面量 是没有能力去查找自己原型的,它必须通过他的构造器来完成原型查找, 1本文将测试以下 a,new这个对象 之前/之后 改变构造器的原型,使其指向其他构造器的原型 b,new这 ...

  4. 使用Zabbix官方模板监控Redis运行状况

    运行环境: OS:CentOS 6.8 / Python: 2.6.6 / Pip: 7.1.0 / Redis:3.0 / Zabbix:3.0.3 Zabbix官方提供的监控模板. 项目地址:ht ...

  5. javaweb 基于java Servlet登入 简单入门案例

    项目流程 第一步:创建一个java webproject第二步:创建三个界面,1,login.jsp 2 success.jsp 3 fail.jsp第三步:更改新建界面编码格式,utf-8 默然编码 ...

  6. MySql 小记

    MySql  简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...

  7. Alpha版总结会议

    昨天上课的时候,我们学习了项目总结这一部分的内容,并根据老师提供的项目Postmortem模板对我们的项目进行了总结. 项目Postmortem模板主要分为设想和目标.计划.资源.变更管理.设计和实现 ...

  8. 添加Silverlight应用到HTML

    Silverlight是跨浏览器,跨客户平台的浏览器插件,可以应用在Windows,Linux,Mac等平台.作为浏览器插件,Silverlight可以像Flash一样,很方便的嵌套在HTML页面中, ...

  9. 【转】iOS9适配

    Demo1_iOS9网络适配_改用更安全的HTTPS iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制 ...

  10. laravel5 安装笔记

    1.环境更新 apt-get update apt-get install php5-cli apt-get install curl 2. Composer安装 curl -sS https://g ...