美文网首页
向页面中添加30000个li标签

向页面中添加30000个li标签

作者: Ertsul | 来源:发表于2018-07-03 12:33 被阅读30次

li 数量少

当我们向页面中添加少量的 li 标签的时候,可以使用普通的添加元素的方法:

<!-- html -->
<ul id="container"></ul>
// js
let container = document.getElementById('container');
for (let i = 0; i < 4; i++) {
    let item = document.createElement('li');
    item.innerText = i + 1;
    ul.appendChild(item);
}
// 或者
// let html = [];
// for (let i = 0; i < 3; i++){
//     html.push('<li>' + (i + 1) + '</li>');
// }
// container.innerHTML = html.join('')

li 数量非常多

但是当我们要添加的 li 标签的数量很多的时候,如果我们还是采取这种方法的话,页面加载的速度会很慢。

举个例子:向页面中添加 30000li 标签。

还是采取上面的方法:

for (let i = 0; i < 30000; i++) {
    let item = document.createElement('li');
    item.innerText = i + 1;
    container.appendChild(item);
}

效果:

01.gif

可见,每当刷新的时候,页面加载的速度非常慢,这种方法对于页面性能有很大的副作用影响。

分治处理 / 批处理

分治处理是采取分治算法思想,将很多的事件处理分为若干次处理的思想。

主要方法是 创建文档碎片document.createDocumentFrag

上面例子的改良:

let container = document.getElementById('container');

let totalCount = 30000;     // 总共的 li 数量
let oneCount = 4;       // 每次添加的 li 数量
let base = 0;       // 用于计数,目前执行添加了几次批处理
let preCount = totalCount / oneCount;       // 总共需要执行的批处理次数

while (base * oneCount < preCount) {
    let fragment = document.createDocumentFragment();
    for (let i = 0; i < 4; i++) {
        let item = document.createElement('li');
        item.innerText = (base * oneCount) + i + 1;
        fragment.appendChild(item);
    }
    container.appendChild(fragment);
    base = base + 1;
}

效果:

02.gif

很明显,这次每当刷新页面的时候,页面加载的速度快了很多。

相关文章

  • 向页面中添加30000个li标签

    li 数量少 当我们向页面中添加少量的 li 标签的时候,可以使用普通的添加元素的方法: li 数量非常多 但是当...

  • a标签包裹li标签后的异常

    使用a标签包裹ul中的li时,a标签默认添加的下划线自动没有!!!!

  • 2018-11-22

    在末尾添加节点 1.获取到ul标签2.创建li标签: 3.创建文本: 4.把文本添加到li的下面: 5.把li文本...

  • JS 性能问题优化-1

    JS 性能问题当浏览器遇到 标签时,当前 HTML 页面无从获知 JavaScript 是否会向 标签添加内容,或...

  • li恢复默认样式

    工作中,因为全局css设置了li标签的list-style:none,但是在后续页面又需要借用li的默认能力:

  • 2019-04-12 列表组(16)

    向元素ul添加 class.list-group。 向li添加 class.list-group-item。 向列...

  • iPhoneX 底部黑线布局适配

    在页面的meta标签中添加 viewport-fit=cover 属性 viewport-fit=cover 页面...

  • 第二章 在HTML中使用JavaScript

    html中如何添加javascript html中添加javascript的标签是 。支持两种方式添加,一种是页面...

  • JS高程系列笔记--脚本引入及其位置

    向HTML页面中插入JavaScript脚本的主要方法有三种:页面嵌入 标签内联页面嵌入 标签外联直接在HTML元...

  • 移动端布局适配

    一、meta标签的效果 移动端页面一般会在head头部添加如下meta标签。 该meta标签是否添加对页面渲染的影...

网友评论

      本文标题:向页面中添加30000个li标签

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