JavaScript中DOM详解


Posted in Javascript onApril 13, 2015

为了达到平稳退化,向后兼容,标记分离的思想,每次写js代码时做的第一件事应该是必要的测试和检查工作:
在js文件里首先添加以下代码进行检查:

window.onload = function(){
if(!document.getElementsByTagName)  return false;
if(!document.getElementById) return false;
if(!document.getElementsByClassName)  return false;
if(!document.getElementById("selector"))  return false;
if(!document.getElementsByTagName("tag"))  return false;
if(!document.getElementsByClassName("selector"))  return false;
};

通用封装函数:

var $ = function(id){
   return document.getElementBy Id (id);
}
var addEvent = function(obj,event,fn){  //obj:元素对象名字,event:绑定事件,fn:触发的回调函数
   if(obj.addEventListener){
obj.addEventListener(event,fn,false);
   }
   else if(obj.attachEvent){
obj.attachEvent("on"+event,fn);
   }
}

对于很多函数需要页面加载即运行,window.onload封装方法如下:

function addLoadEvent(func){
var oldonload = window.onload;
if(typeof window.onload != "function")
{
window.onload = func;
}
else
{
window.onload = function()
{
oldonload();
func();
}
}
}
addLoadEvent(firstFunction);
addLoadEvent(secondFunction);

火狐和IE之间的JavaScript差异

1、在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个a元素,页面会跳转到该元素href属性指定的页。
return false 就相当于终止符,return true 就相当于执行符。
在js中对于return用法的三种景象的总结如下:
retrun true; 返回正确的处理惩罚成果。
return false;返回错误的处理惩罚成果;终止处理惩罚;阻拦提交表单;阻拦履行默认的行动。
return;把把握权返回给页面。

2、在绝大多数时候,把一个函数调用赋值给一个变量将是一个好主意。

3、noscript标签可被用于可识别 script标签但无法支持其中的脚本的浏览器。如果浏览器支持脚本,那么它不会显示出 noscript 标签中的文本。

4、在动态设置样式时,只要有可能,最好选用CSS,最简单的就是选择最容易实现的方法。

5、在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些。

6、如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval,因为setTimeout每一次都会初始化一个定时器,而setInterval只会在开始的时候初始化一个定时器。

7、如果要连接多个字符串,应该少使用+= ,条件分支时尽量使用三目运算符替代条件分支。

8、很多人喜欢使用parseInt(),其实parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换,我们应该使用Math.floor()或者Math.round()。

9、在JavaScript中所有变量都可以使用单个var语句来声明,这样就是组合在一起的语句,以减少整个脚本的执行时间。

10、对于大的DOM更改,使用innerHTML要比使用标准的DOM方法创建同样的DOM结构快得多。

11、当同一个对象使用.onclick的写法触发多个方法的时候,后一个方法会把前一个方法覆盖掉,也就是说,在对象的onclick事件发生时,只会执行最后绑定的方法。而用事件监听则不会有覆盖的现象,每个绑定的事件都会被执行。

12、如果定义了toString()方法来进行类型转换的话,推荐显式调用toString(),因为内部的操作在尝试所有可能性之后,会尝试对象的toString()方法尝试能否转化为String,所以直接调用这个方法效率会更高。

13、因为elemet.style只能获取内联样式,而element.currentStyle.width是IE浏览器专有属性,getComputedStyle(element, null).width是火狐和Chrome浏览器的特有属性,所以为了兼容,获取内外样式方法如下(不可取复合样式,如background,border,而是应该写成backgroundColor,borderWidth):

function getStyle(obj,name) {
   if(obj.currentStyle) {
     return obj.currentStyle[name];
   }
   else
   {
     return getComputedStyle(obj,null)[name];
   }
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
js自带函数备忘 数组
Dec 29 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
Feb 11 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
May 10 Javascript
JS 精确统计网站访问量的实例代码
Jul 05 Javascript
js replace 与replaceall实例用法详解
Aug 03 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
Nov 25 Javascript
微信小程序 跳转传递数据的实例
Jul 06 Javascript
JavaScript使用FileReader实现图片上传预览效果
Mar 27 Javascript
vuex操作state对象的实例代码
Apr 25 Javascript
JavaScript实现电灯开关小案例
Mar 30 Javascript
JS浏览器BOM常见操作实例详解
Apr 27 Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 #Javascript
javascript中scrollTop详解
Apr 13 #Javascript
jQuery实现的在线答题功能
Apr 12 #Javascript
jQuery插件bxSlider实现响应式焦点图
Apr 12 #Javascript
jQuery插件Skippr实现焦点图幻灯片特效
Apr 12 #Javascript
jQuery插件pagination实现分页特效
Apr 12 #Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
Apr 12 #Javascript
You might like
php中文本操作的类
2007/03/17 PHP
destoon常用的安全设置概述
2014/06/21 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
JScript中的undefined和"undefined"的区别
2007/03/08 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
python追加元素到列表的方法
2015/07/28 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
python从子线程中获得返回值的方法
2019/01/30 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
python能否java成为主流语言吗
2020/06/22 Python
python中upper是做什么用的
2020/07/20 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
美国温暖商店:The Warming Store
2018/12/15 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
公司新员工的演讲稿注意事项
2014/01/01 职场文书
安全生产计划书
2014/05/04 职场文书
老乡聚会通知
2015/04/23 职场文书
现货白银电话营销话术
2015/05/29 职场文书
小平您好观后感
2015/06/09 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书