页面循环绑定(变量污染问题)

  1. var lis = document.querySelectorAll(".ul li")
  2.  
  3. for ( var i = 0 ; i < lis.length ; i++ ) {
  4. // 绑定事件时,没有执行事件内部的逻辑体
  5. lis[i].onclick = function () {
  6. console.log(i) # 变量污染导致 i 一直为 4
  7. console.log( lis[i].innerText )
  8. }
  9. }

解决变量污染问题

  1. for ( var i = 0 ; i < 4 ; i++ ) {
  2. lis[i].index = i; //为对象设置一个属性用来保存索引,这样解决了变量污染问题
  3.  
  4. lis[i].onclick = function () {
  5. console.log(this.index)
  6.  
  7. }
  8. }

js面向对象编程

  1. function Person( name,age ) {
  2. this.name = name;
  3. this.age = age;
  4. }
  5.  
  6. var p1 = new Person("egon",79)
  7. var p2 = new Person("lxx",78)
  8.  
  9. console.log(p1.name) // 以对象的形式编程
  10. console.log(p1["name"]) // 以字典的形式

js对象属性的增删改查

  1. var dic {
  2. a:"aaa",
  3. b;"bbb",
  4. }
  5.  
  6. console.log(dic.a)
  7. dict.a = "AAAAA" 有这个属性改掉
  8. dict.c = "CCCC" 没有这个属性增加属性
  9. delete dict.b

js数学类操作

  1. abs(x):返回 x 的绝对值
  2. ceil(x):向上取整
  3. floor(x):向下取整
  4. max(...n):求最大值
  5. min(...n):求最小值
  6. pow(x,y):返回 x y 次幂
  7. random():返回 0 ~ 1 之间的随机数 [0,1)

随机数与随机区间

  1. Math.abs(-10) 10
  2. Math.random() [0,1)
  3.  
  4. 产生随机区间 [ mim,max ]
  5. parseInt( Math.random() * (max - min + 1) + min )
  6.  
  7. 封装随机区间:
    function randoNam(min,max) {
      parseInt( Math.random() * (max - min + 1) + min )
    }

js字符串操作

  1. chartAt(n):指定索引字符,同[n]
  2. concat(str):将目标字符串拼接到指定字符串之后
  3. indexOf(str):指定字符串第一次出现的位置
  4. lastIndexOf(str):指定字符串最一次出现的位置
  5. match(re):匹配指定正则,结果为数组(可全文匹配)
  6.  
  7. replace(re, str):将正则匹配到的字符串替换为指定字符串
  8. search(re):匹配指定正则,结果为匹配的索引,反之-1
  9.  
  10. substr(n, m):从索引n开始,截取m个字符长度(m省略代表截取到最后)
  11. substring(n, m):从索引n开始,截取到索引m(m省略代表截取到最后)
  12. slice(n, m):同substring(n, m)
  13. split(re):以指定正则将字符串拆分为数组
  14.  
  15. toUpperCase():转换为大写
  16. toLowerCase():转换为小写
  17. trim():去除首尾空白字符
  1. // 1.指定索引下的字符
  2. var s = "abcdef123456呵呵哈哈";
  3. console.log(s.charAt(3));
  4.  
  5. // 2.判断是否存在: 呵呵是否在字符串中
  6. // -1代表不存在, 反正就是存在(的索引)
  7. console.log(s.indexOf("呵")); //
  8. console.log(s.lastIndexOf("呵")); //
  9.  
  10. // 3.替换
  11. var newS = s.replace("abc", "ABC");
  12. console.log(s);
  13. console.log(newS);
  14. // 总结: 字符串为不可变类型, 如果某操作要改变字符串, 该操作一定拥有返回值
  15.  
  16. // 4.裁剪 slice(n, m) 从索引n开始截取到索引m之前
  17. newS = s.slice(0, 3);
  18. console.log(newS);
  19.  
  20. // 5.拆分数组
  21. var ss = "123 456 abc def";
  22. var arr = ss.split(" ");
  23. console.log(arr)

js数组操作

  1. indexOf(ele):指定元素第一次出现的位置
  2. lastIndexOf(ele):指定元素最一次出现的位置
  3. reverse():反转数组
  4. join(str):以指定字符串连接成字符串
  5. sort(): 排序
  6. filter(function(value, index){ return true | false}):过滤器
  7.  
  8. 增删改查
  9. push(ele):从尾加
  10. unshift(ele):从头加
  11.  
  12. pop():从尾删
  13. shift():从头删
  14.  
  15. splice(begin, length, ...eles):完成增删改
  16. // begin开始索引
  17. // length长度
  18. // 新元素们(可以省略)
  1. var arr = [3, 5, 1, 2, 4];
  2. console.log(arr); // [3, 5, 1, 2, 4]
  3.  
  4. // 1.反转
  5. arr.reverse();
  6. console.log(arr); // [4, 2, 1, 5, 3]
  7.  
  8. // 2.排序
  9. arr.sort();
  10. console.log(arr); // [1, 2, 3, 4, 5]
  11. console.log(arr.reverse()); // [5, 4, 3, 2, 1]
  12.  
  13. // 3.判断元素是否存在 (不等于-1就是存在)
  14. console.log(arr.indexOf(5));
  15.  
  16. // 4.拼接成字符串
  17. var ss = arr.join("@");
  18. console.log(ss); // 5@4@3@2@1

过滤器(回调函数)

  1. var newArr = arr.filter(function (ele) { // 回调函数的回调次数有数组的个数决定
  2. // filter回调了三个参数: ele, index, sourcerr
  3.  
  4. // 偶数
  5. if (ele % 2 == 0) {
  6. // 满足过滤条件
  7. return true;
  8. }
  9. // 不满足过滤条件
  10. return false;
  11. });
  12. // 满足过滤条件的就会添加到新数组中保留
  13. console.log(newArr) // [4, 2]
  14.  
  15. 原理
  16. arr.filter(fn) {
  17. var newArr = [];
  18. for (var i = 0; i < this.length; i++) {
  19. var res = fn(this[i], i, this);
  20. if (res == true) {
  21. newArr.push(res)
  22. }
  23. }
  24. return newArr;
  25. }

数组的增删改查

  1. // 查
  2. // arr[index]
  3.  
  4. // 改
  5. // arr[index] = newDate;
  6.  
  7. // 增
  8. // 从尾加: push()
  9. // 从头加: unshift()
  10.  
  11. // 删
  12. // pop():从尾删
  13. // shift():从头删
  14.  
  15. // splice(begin, length, ...eles);
  16. // begin开始的索引
  17. // length操作的长度
  18. // 替换为的新元素们(可以省略)
  19.  
  20. // 增
  21. // 从索引3之前操作0位,替换为10 => 在索引3插入10
  22. a.splice(3, 0, 10); // [4, 3, 5, 10, 1, 2]
  23. console.log(a);
  24.  
  25. // 在索引0之前操作0位,替换为1,2 => 在首位添加1和2
  26. a.splice(0, 0, 1, 2);
  27. console.log(a); // [1, 2, 4, 3, 5, 10, 1, 2]
  28.  
  29. // 改
  30. // 在索引末尾之前操作1位,替换为20 => 在末位修改为20
  31. a.splice(a.length - 1, 1, 20); // [1, 2, 4, 3, 5, 10, 1, 20]
  32. console.log(a); // [1, 2, 4, 3, 5, 10, 1, 20]
  33.  
  34. // 删
  35. a.splice(2, 3);
  36. console.log(a); // [1, 2, 10, 1, 20]

页面循环绑定(变量污染问题),js面向对象编程(对象属性增删改查),js字符串操作,js数组操作的更多相关文章

  1. MVC3.0+knockout.js+Ajax 实现简单的增删改查

    MVC3.0+knockout.js+Ajax 实现简单的增删改查 自从到北京入职以来就再也没有接触MVC,很多都已经淡忘了,最近一直在看knockout.js 和webAPI,本来打算采用MVC+k ...

  2. 用 JS(JavaScript )实现增删改查

    JS小例题 学习内容: 需求 总结: 学习内容: 需求 用 JavaScript 实现简单增删改查 实现代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HT ...

  3. 使用JS对HTML标签进行增删改查

    以下为通过JS对li标签进行简单的增删改查: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...

  4. 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询參照:对数据进行增删改查)

    我们常常会用到通过图书的名称来查询图书那么这种话我们也就会使用到从数据库中搜索出数据而且载入到自己的Jsp页面中 这种话我们须要将从数据库中获取到的数据放进响应中然后通过%=request.getAt ...

  5. Node.js + MySQL 实现数据的增删改查

    通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...

  6. node.js中对 mysql 进行增删改查等操作和async,await处理

    要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...

  7. js的动态表格的增删改查思路

    1. 首先我们要知道,动态添加,肯定不是 在页面上写死得,而是通过js调用循环放入到页面上的,我们在写动态表格的时候不要先着急写,我们第一步要做的就是构思,要把自己的逻辑先弄清楚,不然的话,前面是好写 ...

  8. js的动态表格的增删改查完整代码

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. javascript 原生js对html元素的 增删改查 操作

    'use strict'; class View{ constructor(){ } //创建html元素 addEl(fel, elemName, id, cls){ //创建一个元素 let el ...

随机推荐

  1. 简单概括下MongoDB 4.0 新特性

    (1)跨文档事务支持 (ACID) 首个支持跨文档事务的NoSQL云数据库,将文档模型的速度,灵活性和功能与ACID保证相结合.现在,使用MongoDB解决各种用例变得更加容易. (2)40%迁移速度 ...

  2. React---入门(1)

    React是什么? React 是一个用于构建用户界面的 JAVASCRIPT 库. React 特点 1.声明式设计 −React采用声明范式,可以轻松描述应用. 2.高效 −React通过对DOM ...

  3. java 位运算符 以及加法 交换两个变量值

    先给出十转二的除法 2       60 30       0 15 0 7 1 3 1 1  1 0  1 60转二 111100 再介绍位运算符 a=60 b=13 A = 0011 1100 B ...

  4. scrapy formRequest 表单提交

    scrapy.FormRequest 主要用于提交表单数据 先来看一下源码 参数: formdata  (dict or iterable of tuples) – is a dictionary ( ...

  5. PHP按权重随机

    之前业务部门提了一个需求,要求将广告按照ecpm高低进行随机.(即:ecpm高的获取流量的几率大) 如下数组: //要求AD1的概率要求为50%,AD2概率为25% ,AD3的概率为15%,AD4的概 ...

  6. 类ArrayList

    什么是ArrayList类 Java提供了一个容器 java.util.ArrayList 集合类,他是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储的元素. Array ...

  7. Pairwise 找到你的另一半

    都说优秀的程序员擅长面向对象编程,但却经常找不到另一半,这是为什么呢?因为你总是把自己局限成为一个程序员,没有打开自己的思维. 这是一个社群的时代啊,在这里你应该找到与你有相同价值观但又互补的另一半. ...

  8. 【刷题】牛客网看到的鹅厂ML面筋-部分问题RecSys相关

    昨天下午六点半的电话面试,其实我已经有了一个不错的实习offer ,不是特别想去腾讯了,没有太怎么准备,接的电话. 整个面试15分钟,开始就是自我介绍,接着问项目,和上一段百度实习经历.问题大致如下: ...

  9. 解决使用Spring Boot、Multipartfile实现上传提示无法找到文件的问题

    前言 SpringBoot使用MultiPartFile接收来自表单的file文件,然后进行服务器的上传是一个项目最基本的需求,我以前的项目都是基于SpringMVC框架搭建的,所以在使用Spring ...

  10. Spring Boot 2.x 编写 RESTful API (一) RESTful API 介绍 & RestController

    用Spring Boot编写RESTful API 学习笔记 RESTful API 介绍 REST 是 Representational State Transfer 的缩写 所有的东西都是资源,所 ...