高效的js原生代码
1、遍历元素
//不推荐
var element = document.getElementsByTagName('div');
for(var i=0; i<element.length; i++){
element[i].innerHTML = '111';
element[i].style.color = 'red';
}
//推荐
var element = document.getElementsByTagName('div');
for(var i=0,e; e=element[i]; i++){
e.innerHTML = '111';
e.style.color = 'red';
}
//推荐
var element = document.getElementsByTagName('div');
for(var i=0; i<element.length; i++){
var e = element[i];
e.innerHTML = '111';
e.style.color = 'red';
}
2、字符串匹配
所有字符串匹配技术都非常快,但应谨慎使用,以免造成浪费。通常,在Opera中使用非常简单的字符串匹配,stringObject.indexOf比stringObject.match更快。如果搜索简单的字符串匹配项,应尽可能使用indexOf而不是正则表达式匹配项。
除非绝对必要,否则应避免与很长的字符串(10KB +)匹配。如果您确定匹配只会发生在字符串的特定部分,请选择一个子字符串,然后与之进行比较,而不是整个字符串。
正则表达式创建一次,重复使用。
3、减少计时器的使用
4、运用逻辑运算符&&(假前真后)
为了最大程度地提高效率,您可以先检查文件名,然后在满足文件名检查的情况下继续执行更昂贵的文件内容检查。
5、减少元素添加次数:每次向文档中添加元素时,浏览器都必须对页面进行重排,以计算出所有内容的放置和渲染方式。
var foo = document.createDocumentFragment();
foo.appendChild(document.createElement('p'););
foo.appendChild(document.createElement('p'));
foo.firstChild.appendChild(document.createTextNode('Test'));
foo.lastChild.appendChild(document.createTextNode('Me'));
foo.firstChild.style.color = 'green';
document.body.appendChild(foo);
6、分配多种样式
//低效
oElement.style.position = 'absolute';
oElement.style.top = '0px';
oElement.style.left = '0px';
//高效
oElement.setAttribute('style','position:absolute;top:0px;left:0px;... etc ...');
高效的js原生代码的更多相关文章
- js原生代码实现轮播图案例
一.轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同! 我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好. 在这里分享一下,用j ...
- 仿jQuery的siblings效果的js原生代码
仿jQuery的siblings效果的js原生代码 <previousSibling> 属性返回选定节点的上一个同级节点(在相同树层级中的前一个节点). <nextSibling&g ...
- 用Node.js原生代码实现静态服务器
---恢复内容开始--- 后端中服务器类型有两种 1. web服务器[ 静态服务器 ] - 举例: wamp里面www目录 - 目的是为了展示页面内容 - 前端: nginx 2. 应用级服务器[ a ...
- 编写高效的js/jQuery代码 :rocket:
讨论jQuery和javascript性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的jQuery和javascript代码.好的代码会带来速度的提升.快速渲染 ...
- JS原生代码实现导航高亮
一 实现原理 根据当前页面滚动条的高度判断当前页面应当与导航栏中哪个导航相关联,并对相应的导航设置高亮样式. 二 代码解析 先简单写一个页面顶端的导航栏:<nav> <ul> ...
- 基于面向对象的图片轮播(js原生代码)
无论你想走多远,你都需要不断地走下去.前端最精华的便是原生的js,这也是我们前端工程师的技术分层的重要指标,也提现这你的代码能力,开发的水平.废话不多说,进入今天的主要分享————基于面向对象思想的图 ...
- JS原生代码之倒计时抢购
学到了原声js改变input的disabled的属性值,因为想让倒计时结束的同时,抢购按钮可以被点击.代码为:document.getElementById("buy").disa ...
- day28(ajax之js原生代码实现)
ajax ajax:异步页面无刷新技术 AJAX:异步的 JavaScript And XML. * 使用的是老的技术,用的是新的思想. AJAX的功能:完成页面的局部刷新,不中断用户的体验. XML ...
- js原生代码实现鼠标拖拽(超简单)
首先先来看这一张图 在这种图中,盒子的大小为512px,并且margin-left:-250px margin-top:140px;并通过一些样式让其在中部显示 这些样式都不是重要的,这里加个marg ...
随机推荐
- Storm的基本概念
Storm的基本概念 Topology:拓扑,也俗称一个任务,类似于MapReduce中的job.将Spout.Bolt整合起来的拓扑图.定义了Spout和Bolt的结合关系.并发数量.配置等等. S ...
- O024、Nova组件如何协同工作
参考https://www.cnblogs.com/CloudMan6/p/5415836.html Nova 物理部署方案 前面大家已经看到 Nova 由很多子服务组成,我们也知道OpenS ...
- ccs之经典布局(一)(水平垂直居中)
经典的css布局有以下几种,下面分别用不同的方法进行实现且进行对比. 一.水平居中 水平居中布局指的是当前元素在父级元素的容器中,水平方向上显示的是居中的,有以下几种方式来完成布局: 1.margin ...
- jquery 滚动事件-记录自己常用的
1.h5端页面滑动至第3屏及以后才出现置顶按钮 $(document).scroll(function() { var scroH = $(document).scrollTop(); //滚动高度 ...
- vs编译项目报错:The OutputPath property is not set for this project
今天使用VS2008编译项目时报错: The OutputPath property is not set for this project. Please check to make sure t ...
- 多线程的些许理解(平台x86,具体考虑linux,windows)
多线程的些许理解 一.体系架构 1.原子操作 1) 定义 不可中断的一个或者一系列操作,也就是不会被线程调度机制打断的操作,在运行期间不会有任何的上下文切换(context switch). 2) 我 ...
- RT-Thread中的串口DMA分析
这里分析一下RT-Thread中串口DMA方式的实现,以供做新处理器串口支持时的参考. 背景 在如今的芯片性能和外设强大功能的情况下,串口不实现DMA/中断方式操作,我认为在实际项目中基本是不可接受的 ...
- Firefox 的User Agent 将移除 CPU 架构信息
Mozilla 计划从 Firefox 的 User Agent(用户代理)和几个支持的 API 中移除 CPU 架构信息,以减少 Firefox 用户的“数字指纹”.Web 浏览器会自动向用户在应用 ...
- PAT Basic 1001 害死人不偿命的(3n+1)猜想 (15 分)
卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...
- zencart网站上线前,邮件模板默认网址修改
涉及到的文件 includes\languages\语言包\模板\email_extras.php 后台\includes\languages\语言包\email_extras.php 后台\incl ...