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 相关文章推荐
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
Nov 30 Javascript
JS阻止用户多次提交示例代码
Mar 26 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
Jquery操作cookie记住用户名
Mar 29 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
Mar 09 Javascript
Bootstrap实现的标签页内容切换显示效果示例
May 25 Javascript
js实现鼠标跟随运动效果
Aug 02 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
完美解决linux下node.js全局模块找不到的情况
May 16 Javascript
详解webpack的proxyTable无效的解决方案
Jun 15 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 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 和 MySQL 基础教程(三)
2006/10/09 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php单链表实现代码分享
2016/07/04 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
图片自动更新(说明)
2006/10/02 Javascript
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
XmlUtils JS操作XML工具类
2009/10/01 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
原生js实现购物车功能
2020/09/23 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
Python之str操作方法(详解)
2017/06/19 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
学前教育学生自荐信范文
2013/12/31 职场文书
高三英语教学反思
2014/01/13 职场文书
快餐公司创业计划书
2014/04/29 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
影子教师研修方案
2014/06/14 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
web前端之css水平居中代码解析
2021/05/20 HTML / CSS
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server