美文网首页
js高级程序设计,第十章(小总结):

js高级程序设计,第十章(小总结):

作者: cs0710 | 来源:发表于2017-08-22 00:39 被阅读10次
1.关于table方法的使用

在关于table方法的使用中,由于好久没有在业务场景中使用到表格的创建,所以今天看到了这些,并且在目前的业务场景中,同事适用了table表格,不过是将表格封装成了组件使用,这里关于table的方法做一下总结。

关于table在逻辑中使用最多的就是添加一行、删除一行或者在行中添加一列或者删除一列,自然而然就使用到了下面的方法。

// 使用原生js进行创建表格
const table = document.createElement("table");
const tr1 = table.insertRow(0);  // 在table中添加第一行,返回的就是对新插入行的引用,下标从0开                                  始
const td1 = tr1.insertCell(0);  // 在第一行中插入第一列,返回的是对新插入列的引用,下标从0开                                  始
const tr2 = table.insertRow(1);  // 在table中添加第一行,返回的就是对新插入行的引用,下标从0开                                  始
const td2 = tr1.insertCell(1);  // 在第一行中插入第一列,返回的是对新插入列的引用,下标从0开                                  始
......

// 删除一行
table.deleteRow(0);  // 删除第一行
tr2.deleteCell(0); // 删除第二行的第一列
// 依次创建多行和多列
document.appendChild(table);

这里的insertRow、insertCell、deleteRow、deleteCell里面的参数都是指定的位置,下标从0开始。

2.关于对for循环的两种差异

for循环的大家都不陌生,可是有一点差异或许在某些使用中会导致你的无限循环,会持续操作DOM节点,导致浏览器崩溃。比如下面的一个例子,这对我理解for循环的遍历和两种写法的不同,还有有帮助的,所以这里做一下总结。

// 第一种写法
let divs = document.getElementsByTagName("div"), // 先获取文档中的div元素
    i,
    div
for (i = 0; i < divs.length; i++) {
      div = document.createElement("div");  // 创建了一个div元素
      document.body.appendChild(div); 
}

// 第二种写法
let divs = document.getElementsByTagName("div"), // 先获取文档中的div元素
    i,
    len,
    div
for (i = 0, len = divs.length; i < len; i++) {
      div = document.createElement("div");
      document.body.appendChild(div);
}

这上面的两种写法看着是没有什么差别,或许在普通的循环中也没什么差别,都可以实现遍历。但是这里的首要差别就是效率问题,第一种写法每一次都会去计算(i < divs.length),这就相当于每一次都去重新查询DOM文档中的div节点的个数。而第二种很直接,就在初始化的时候计算一次div的长度。所以在使用第一种方法往DOM文档中插入元素时,要注意!这样会导致你的浏览器最终崩溃。而第二种更为保险,建议在普通循环中也使用第二种,起码效率得到了提升。

本章的内容较基础,讲了好多底层的实现,特别是原生的js实现逻辑,这里的两点是临时看到的感觉对自己在工作中有帮助的,有利于提高效率的两点。👋

相关文章

  • JS转义字符

    摘自《JS高级程序设计》

  • js高级程序设计,第十章(小总结):

    1.关于table方法的使用 在关于table方法的使用中,由于好久没有在业务场景中使用到表格的创建,所以今天看到...

  • JS笔记001(JS的组成、数据类型)

    内容归纳总结自《JavaScript高级程序设计》 1. JS的组成 1.ECMAScript核心 解释器2.D...

  • js高级程序设计,总结:

    1.Number()和parseInt()、parseFloat()之间的区别:(1)Number()适用于任何的...

  • DOM

    以下内容总结自《js高级程序设计 第三版》 今天来说说JS中的DOM以及DOM操作。 DOM是什么,做了什么? D...

  • 前端知识体系

    1.JS基础 5 2.JS高级 5JS高级程序设计,各种api的应用,es6新增api的运用 3.CSS...

  • 函数表达式

    以下内容总结自《JS高级程序设计》第三版 什么是函数表达式? 函数表达式,是JS中定义函数的一种方式。在JS中,共...

  • Books

    一 JS书籍推荐JS高级程序设计 (望远镜)JS工作原理犀牛书二、行业书籍《人月神话》

  • 正则表达式

    JS高级技巧 本篇是看的《JS高级程序设计》第23章《高级技巧》做的读书分享。本篇按照书里的思路根据自己的理解和经...

  • js高级程序设计(日期),总结:

    1.Date时间类型 Date时间类型可以通过构造函数Date实现对时间的操作,如:获取时间戳等。今天看了一下明白...

网友评论

      本文标题:js高级程序设计,第十章(小总结):

      本文链接:https://www.haomeiwen.com/subject/tzkkdxtx.html