(function(){
var gcld_but = document.getElementById("gcld_but"),
gcld_but_li = gcld_but.getElementsByTagName("li"),
gcld_box = document.getElementById("gcld_box"),
close_btn = document.getElementById("close_btn"),
gcld_btn = document.getElementById("gcld_btn"),
box = document.getElementById("box"),
mask = document.getElementById("mask"),
len = gcld_but_li.length,
gcld_but_a,
i,
s_height = document.documentElement.scrollHeight||document.body.scrollHeight;
o_height = null,
o_width = null,
on = 0; ------------------------>>>>>>>>>>>>>>>>>>>>>变量尽量写在开头,防止滚动时候每次执行函数就取DOM元素,浪费性能。 
	mask.style.height = s_height+"px";

	/*水平垂直居中函数*/
function centered_box(){
var s_top = document.body.scrollTop||document.documentElement.scrollTop,
c_height = document.documentElement.clientHeight||document.body.clientHeight,
c_width = document.documentElement.clientWidth||document.body.clientWidth,
left,
top; if( !o_height ){------------------------------>>>>>>>>>>>>>>>>>>>取一次DOM元素后放在变量里(页面不关闭就一直存在),下次执行函数就不用取了。
o_height = box.offsetHeight;
o_width = box.offsetWidth;------------------->>>>>>>>>>>>>>>>有些浏览器在元素display:none时取不到宽高,点击按钮显示该元素后再执行函数,所以写在函数里面一定能取到。
} left = (c_width - o_width)/2 + "px";
top = (c_height/2 - o_height/2 +s_top) + "px"; box.style.left = left;
box.style.top = top;
} /*点击打开弹窗*/
for(i=0; i<len; i++){
gcld_but_a = gcld_but_li[i].getElementsByTagName("a")[0];
gcld_but_a.onclick = function(){
gcld_box.style.display = "block";
on = 1;-------------------->>>>>>>>>>>>>>>>>>>>>>>加个开关,确保只让点击的时候执行弹窗函数。
centered_box();
}
} /*关闭弹窗*/
close_btn.onclick = gcld_btn.onclick = function(){
gcld_box.style.display = "none";
on = 0;
}; window.onscroll = window.onresize = function(){
if(on){
centered_box();
}
}; })();
总结:1:定义的变量尽量写在程序的上方----规范
   2:(从执行流的角度)功能实现后----(从性能的角度)对程序进行优化。
   3:性能优化
      1、防止重复获取DOM元素
      2、防止重复执行代码函数
      3、写法考虑兼容性
      

js小程序写法优化的更多相关文章

  1. 微信小程序性能优化技巧

    摘要: 如果小程序不够快,还要它干嘛? 原文:微信小程序性能优化方案--让你的小程序如此丝滑 作者:杜俊成要好好学习 Fundebug经授权转载,版权归原作者所有. 微信小程序如果想要优化性能,有关键 ...

  2. 【微信小程序推广营销】教你微信小程序SEO优化,让你的小程序快人一步抢占先机

    今年一月份上线的小程序,经过近一年的沉淀发酵,现在也进入了快速发展期. 在未来肯定会有越来越多的小程序诞生,小程序多了就需要搜索,那么如何让自己的小程序在众多的小程序中脱颖而出,这就需要小程序SEO优 ...

  3. 微信小程序开发优化

    一.开发优化一 1.使用Vant Weapp 1.1 什么是Vant Weapp Vant Weapp官网链接 Vant Weapp是有赞前端团队开源的一套小程序UI组件库,助力开发者快速搭建小程序应 ...

  4. 微信小程序性能优化之一

    性能优化 界面和业务逻辑之间事件交互小程序调用nativeNative回调小程序 图片源文件优化 渲染优化 ---------------------------------------------- ...

  5. Please do not register multiple Pages in undefined.js 小程序报错的几种解决方案

    Wed Jun 27 2018 09:25:43 GMT+0800 (中国标准时间) Page 注册错误,Please do not register multiple Pages in undefi ...

  6. 微信小程序:优化页面要渲染的属性

    问题:页面中只用到四个属性:goods_name,goods_price,goods_introduce,pics,但是整个对象中有22个属性,小程序中建议:data中只存放标签中要使用的数据,而现在 ...

  7. js 学习之路10:try异常处理和第一个js小程序

    try 语句测试代码块的错误. catch 语句处理错误. throw 语句创建自定义错误. 1. try/catch语句 catch语句用来捕获try代码块中的错误,并执行自定义的语句来处理它. 语 ...

  8. 小程序的优化代码的分析Promise方法

    代码优化,这里通过了wx.request请求轮播图的API,通过result结果里面的data数据我们可以看到massage里面装着我们的数据 通过图片可以用看到swiperList返回的三个元素的数 ...

  9. 微信小程序:优化接口代码-提取公共接口路径

    方法一.将公共部分提取出来定义为baseURL变量 简化url,把里面公共部分提取出来.如https://api-hmugo-web.itheima.net/api/public/v1/categor ...

随机推荐

  1. uva 147 Dollars

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. sychronized 和 Lock的比较

    sychronized是在jvm层面上实现的,可以通过一些监控工具监控sychronized的锁定,而且在代码执行出现异常时,jvm会自动释放锁,但是使用Lock就不行,lock是通过代码实现的,最终 ...

  3. 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库

    数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...

  4. XML Schema choice 元素

    XSD : <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://w ...

  5. livecd环境下chroot修复系统

    今天想升级centos5.7的glibc版本,想当然的把新编译的glibc的libc-2.7.so 复制到/lib64/libc-2.5.so lrwxrwxrwx root root Mar : / ...

  6. [译]Dynamics AX 2012 R2 BI系列-分析的架构

    https://msdn.microsoft.com/EN-US/library/dd309691.aspx     下图显示了包含在AX中的SSAS Cube,和用于访问他们的组件.     下面的 ...

  7. Centos7上搭建OpenvpnServer——pritunl

    首先做基本的安装,如下(国内下载pritunl的rpm包可能会有点慢,多试几次) # vi /etc/yum.repos.d/mongodb-org-3.2.repo [mongodb-org-3.2 ...

  8. 简单介绍MR21和MR22

    MR21和MR22都可以用来调整价格,MR21是更改的单个物料的价格,MR22更改的是库存总价值,所以MR21可以更改移动平均价(V)或标准价(S)的物料价格.MR22只能更改移动平均价(V)的物料价 ...

  9. 用java代码手动控制kafkaconsumer偏移量

    为应对消费结果需要存储到关系数据库中,避免数据库down时consumer继续消费的场景 http://kafka.apache.org 查了很多源码都记录下来,省的下次还要过滤源码. //如果将结果 ...

  10. IOS 视频缩略图的生成

    使用AVFoundation框架可以生成视频缩略图,用到的类: >>AVAsset: 用于获取多媒体的相关信息,如多媒体的画面和声音等. >>AVURLAsset: AVAss ...