`
懒乔治
  • 浏览: 3266 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于动态加载dom若干问题

    博客分类:
  • js
 
阅读更多

       在这里用若干这个词只是装个逼,主要问题只有俩个。第一:获取不到加载的dom;第二:动态操作dom时减少dom操作。

       很多前端开发的初级工程师总会时不时被要求帮忙写个ajax请求啊、处理一下数据呗 。。。 ╮(╯_╰)╭

面对各位大佬们地欺压,我选择沉默。

       叫喊不过想来也好,多练练也没什么不对。本人作为刚毕业的只有一年实习经验的小白来说,这个问题我遇到过俩次,第一次在我百般努力下,没有成功最终项目组长告诉了我方法,让我这个从后端转来的人感到十足的挫败感;第二次在遇到的时候,嘿嘿 。。。 我能放过她嘛?

       首先遇到这个问题的时候,先不要慌。我本着既然是问题那我一定要追本溯源把她连根拔下才解气,所以咱们还是先明白为什么会出现这个问题。

       浏览器的加载过程是什么?这个问题你必须先搞清楚!根据网上众多大牛的分析来看,我总结了一下:首先你在本地打开html页面时,你得让浏览器(主要是其内核webkit、Gecko)先解析你得html让他的内核知道你要做个什么样的东西比如说它的骨架是什么(html标签,其实是dom -。-),它的外观是什么样(css),它需要摆什么pose(position、js中修改dom位置)等,也就是解析html - 加载外部样式表和脚本 - 脚本在文档内解析并执行;通过上面的准备浏览器接受了你得大部分代码,他将html dom完全构造起来;最后一步是加载图片与其他外部内容;最后网页完成加载。

      顺序是:解析html - 加载外部样式表和脚本 - 脚本在文档内解析并执行 - dom完全被构造成型(渲染与布局完成) - 加载图片和外部内容 - 网页完成加载。

       在获得后台(php/java+mysql)返回数据后如果你们的后台未对数据进行处理(json),那你得先打出返回的数据,自己将其转化为json后方便处理。在保证返回的数据后,我相信很多同学都会,for/for-in/foreach,我还是建议你用foreach效率问题网上数据一大推,主要还是js是异步的,用foreach会避免一些莫名其妙的问题。利用foreach将json数据解析,然后拼接:

                    var givenData = JSON.parse(data);
                    var eval_msg = eval(data);
                    eval_msg.forEach(function(item){
                        rowStr='<tr><td><span>'+item.create_date+'</span></td><td>'+item.recharge_num+'</td></tr>';
                        $('#htRecordChargeTable'+dataID).append(rowStr);
                     });

      然后,循环添加dom。这样子有问题么?当然是没有,但是不完美。dom操作太频繁会影响网页layout(也就是我上面所说的布局),循环操作dom,循环影响布局,循环影响网页加载。╮(╯_╰)╭,这不是我们想要的,所以我们要尽量做到一次性操作dom,代码如下:

                    eval_msg.forEach(function(item){
                        rowStr+='<tr><td><span>'+item.create_date+'</span></td><td>'+item.recharge_num+'</td></tr>';
                    });
                    $('#htRecordChargeTable'+dataID).append(rowStr);

       所以我们循环操作被添加的dom字符串,如上的rowStr,全部拼接后一次性apped进去。(这是问题2,我得个人经验)

       这里选取,知乎上一位网友的问题描述(其实我有点手懒 - -。):

       

       这里的问题也是我想说的,你在这里绑定click都叫 .my 到底点哪一个!?叫喊其实顺着这位同学的思路往下走正确的打开方式应该是拿到所有的 .my 然后利用each函数添加click事件,但是这又得循环了,并不是我们想要的。然后呢,我们可以问后台将id放到返回的数据中,然后我们可以在添加dom时,把id拼进去,直接添加onclik函数利用this.id把id传进去,这样我们就能知道到底点哪一个。上代码:

for(var i = 1; i <= obj.allNum; i++){
                    var dataID=obj.all+'_'+i';
                    str+='<li><a href="javascript:void(0)" class="page_num" id='+dataID+' onclick="enumPage(this.id)">'+i+'</a></li>';
                }
                $('#prev_page').after(str);

 然后在外部,写一个enumPage函数即可:

 function enumPage(enumPageId){
        var dataId = enumPageId;
        var id=dataId.split('_')[1];
...
}

       以上均个人总结,还希望与大家一起交流。

  • 大小: 23.9 KB
分享到:
评论

相关推荐

    js动态创建table点击按钮dom table tr添加操作

    5. **添加数据行**:假设你有一个数据数组,你可以遍历这个数组,为每一项创建一行`&lt;tr&gt;`,并在其中添加数据单元格`&lt;td&gt;`和操作按钮`&lt;button&gt;`。 ```javascript data.forEach(item =&gt; { const row = document....

    基于Vue的web端超长数据表格动态加载

    本文将深入探讨如何利用Vue.js构建一个支持超长数据表格的动态加载机制,解决web端表格在面对大数据量时的卡顿问题。 一、Vue.js的响应式原理 Vue.js的核心在于它的响应式系统,它通过数据观察和依赖收集来实现视图...

    JavaScript动态网站开发若干案例

    本文将基于"JavaScript动态网站开发若干案例"的主题,详细解析这些章节内容,以帮助初学者和进阶者深入理解JavaScript的基础实例。 首先,让我们从`readme.txt`开始。这个文件通常包含对整个压缩包的介绍或目录,...

    jquery动态分页数据获取代码

    动态分页是将整个数据集分割成若干个部分(页),每次只加载用户当前查看的那一部分数据,而不是一次性加载所有数据。这减少了前端页面的负担,加快了页面加载速度,同时也降低了服务器的压力。 在 jQuery 中,实现...

    xml dom 中文手册

    3. **DOM方法**:手册中提到的“XMLDOM对象方法手册”可能包含了如`appendChild()`(添加子节点)、`removeChild()`(移除子节点)、`getElementsByTagName()`(根据标签名获取元素集合)、`innerHTML`(获取或设置...

    使用Fusion Charts制作报表(dom4j生成XML)

    这篇博客"使用Fusion Charts制作报表(dom4j生成XML)"主要介绍了如何利用Fusion Charts结合DOM4J库来生成XML数据,从而创建动态报表。 首先,我们需要理解Fusion Charts的核心概念。Fusion Charts提供了一系列预定...

    XMLDOM对象方法手册

    这个"XMLDOM对象方法手册"很可能包含了关于如何使用XMLDOM对象来操作XML文档的各种方法和属性的详细说明。 在XMLDOM中,有若干关键对象,如Document对象、Node对象、Element对象等,它们构成了一个层次结构,代表了...

    jQuery实现动态更改table表格数据

    本教程将深入探讨如何使用jQuery实现动态更改table表格数据,让你的网页表格具有实时编辑功能,提升用户体验。 首先,我们需要理解HTML表格的基本结构。一个基本的表格由`&lt;table&gt;`元素开始,包含若干个`&lt;tr&gt;`(行)...

    javascript DOM操作之动态删除TABLE多行

    在JavaScript中,动态地删除HTML表格(TABLE)中的多行数据是一种常见的DOM操作。DOM(文档对象模型)是HTML和XML文档的编程接口,它允许我们通过脚本编程的方式动态地修改文档结构、样式和内容。 首先,需要了解...

    动态添加 td tr 表格 javascript

    在JavaScript编程中,动态添加`td`(表格数据单元格)和`tr`(表格行)是常见的需求,尤其在创建交互式网页时。本文将深入探讨如何利用JavaScript实现这一功能,以及它在实际开发中的应用。 首先,我们需要了解HTML...

    若干javascript代码资源

    4. **事件处理**:JavaScript能够响应用户操作,如点击按钮、页面加载等,通过添加事件监听器来实现动态交互。 5. **DOM操作**:文档对象模型(DOM)是JavaScript操作HTML和CSS的主要方式。学习如何选择元素、修改...

    vue大数据表格卡顿问题的完美解决方案

    2. 动态加载:按需渲染和加载表格的部分区域,利用滚动事件来动态加载可视区域内的表格数据,其余未滚动到的部分暂不加载,这样可以有效减少一次性渲染的DOM节点数量。 3. 固定行列:利用滚动事件控制固定列和固定头...

    10种JavaScript分页代码.rar

    在大数据量场景下,可以采用动态加载或懒加载技术,即只在用户滚动到可视区域时才加载下一部分数据,这样可以显著减少初次加载的时间。 9. 兼容性和性能: 编写JavaScript分页代码时要考虑浏览器兼容性,尤其是对于...

    js分页+列表排序+属性显示

    "js分页+列表排序+属性显示"这一技术组合,旨在提供一种无需页面刷新就能实现数据动态加载、排序以及特定属性显示的功能,提升用户体验。以下是关于这些知识点的详细说明: 1. **分页(Pagination)**: 分页是一...

    通过JavaScript+IFRAME实现页面分屏加载

    分屏加载的核心思想是将页面拆分成若干个部分(如头部、主体、底部等),然后用IFRAME分别加载这些部分。这样,用户可以先看到页面的基本结构,而其他部分则在后台异步加载,提升了页面的响应速度。 ### 3. ...

    纯前端分页

    纯前端分页是一种在网页上实现数据展示时的常见技术,尤其在大数据量的情况下,它能够有效地提升用户体验,避免一次性加载过多数据导致页面卡顿。本文将深入探讨纯前端分页的实现原理、相关技术以及如何运用到实际...

    jQuery图片显示动态文字特效.zip

    这可能包括一个`&lt;img&gt;`元素展示图片,以及若干`&lt;div&gt;`或`&lt;p&gt;`元素用于动态显示文字。 2. **CSS样式**:为元素添加必要的样式,如定位(positioning)、尺寸(dimensions)和透明度(opacity)。使用CSS3动画或过渡...

    jQuery结合ajax实现动态加载文本内容

    动态加载文本内容是指在网页已经加载完成后,通过Ajax请求从服务器获取数据,并将这些数据动态地加载到网页的指定位置。例如,在一个页面的特定区域显示从服务器上获取的文本内容。这样做可以使得页面初始加载时体积...

    jQuery实现html表格动态添加新行的方法

    通过使用`.click()`、`.after()`、`$("selector")`等jQuery方法,我们可以轻松地扩展表格数据,实现更加动态的网页交互功能。jQuery作为一种强大的前端开发工具,极大地简化了JavaScript操作,使得网页开发更加高效...

    JavaScript DOM 学习第七章 表单的扩展

    为了解决旧版IE的问题,开发者可以尝试通过innerHTML而非DOM操作来生成单选框,或为动态生成的表单元素设置ID,从而利用ID选择器进行访问和操作。 示例中,我们看到一个基本的HTML结构,其中包括了隐藏的模板区域,...

Global site tag (gtag.js) - Google Analytics