浅析javascript中的DOM


Posted in Javascript onMarch 01, 2015

什么是Dom?

1.简介

        文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。Document Object Model的历史可以追溯至1990年代后期微软与Netscape的“浏览器大战”,双方为了在JavaScript与JScript一决生死,于是大规模的赋予浏览器强大的功能。微软在网页技术上加入了不少专属事物,计有VBScript、ActiveX、以及微软自家的DHTML格式等,使不少网页使用非微软平台及浏览器无法正常显示。DOM即是当时蕴酿出来的杰作。

        DOM(文档对象模型)是HTML和XML的应用程序接口(API)。DOM将把整个页面规划成由节点层级构成的文档。

        所谓文档对象模型,其实就是对网页HTML中的各种元素的一种内部的表示,例如HTML中的头、段落、列表、风格、ID等,所有的元素都能通过DOM来访问 。

        JavaScript最终是要操作Html页面,让Html变成DHtml,而操作Html页面就要用到DOM。DOM就是把Html页面模拟成一个对象,如果JavaScript只是执行一些计算、循环等操作,而不能操作Html也就失去了它存在的意义。

        DOM就是Html页面的模型,将每个标签都做为一个对象,JavaScript通过调用DOM中的属性、方法就可以对网页中的文本框、层等元素进行编程控制。比如通过操作文本框的DOM对象,就可以读取文本框中的值、设置文本框中的值。

2.图解

浅析javascript中的DOM

关于window整个页面或者说窗口就是一个window对象---------------window是顶级对象

页面中定义的变量和方法都是window的

window.id

document.getElementById()

使用window对象的属性、方法的时候可以省略window。

比如:

window.alert(‘hello');

可以省略成alert(‘hello');

window.document可以直接写document

能不写window就不要写,这样可以减少js文件的字节数。

window.alert(‘大家好!');//弹出警告对话框

window.confirm(‘确定要删除吗?');//确定、取消对话框,返回true或false;

window.navigate(url);//将网页重新导航到url,支持IE、Opera11.6。并不推荐,有些浏览器不行,

建议使用window.location.href=‘url';//支持大多数浏览器

动态操作DOM元素

1.获取DOM

getElementById(), (非常常用),根据元素的Id获得对象,网页中id不能重复。也可以直接通过元素的id来引用元素,但是有有效范围、

getElementsByName(),根据元素的name获得对象,由于页面中元素的name可以重复,比如多个RadioButton的name一样,因此getElementsByName返回值是对象数组。

getElementsByTagName(),获得指定标签名称的元素数组,比如getElementsByTagName(“input”)可以获得所有的<input>标签。*表示所有标签

2.添加、移除、替换

document.write只能在页面加载过程中才能动态创建。

可以调用document的createElement方法来创建具有指定标签的DOM对象,然后通过调用某个元素的appendChild();方法将新创建元素添加到相应的元素下。//父元素对象.removeChild(子元素对象);删除元素。

createElement(‘element');创建一个节点

appendChild(node); 追加一个节点

removeChild(node);移除一个节点

replaceChild(new,old);替换一个节点

insertBefore(new,参照);把节点加到前面(插到某个节点前面)

方法:

属性:

firstChild

lastChild

3.用innerHTML还是createElement()、appendChild()与removeChild()?

操作页面的元素的时候是用innerHTML的方式还是createElement()、appendChild()与removeChild()的方式?

1.对于大量进行节点操作时,使用innerHTML的方式性能要好于频繁的Dom操作(有专门用C或C++写的html解析器。)。先将页面的HTML代码写好,然后调用一次innerHTML,而不要反复调用innerHTML.

2.对于使用innerHTML=‘'的方式来删除节点,在某些情况下会存在内存问题。比如:div下面有很多其他元素,每个元素都绑定有事件处理程序。此时,innerHTML只是把当前元素从节点树上移除了,但是那些事件处理程序依然占用内存。

js操作样式

修改元素的样式是className属性。

(class是JavaScript的一个保留字,属性不能用关键字、保留字所以就变成className了)网页开关灯的效果。

修改元素的样式不能this.style="background-color:Red"。

单独修改样式的属性使用“style.属性名”。注意在css中属性名在JavaScript中操作的时候属性名可能不一样,主要集中在那些属性名中含有-的属性,因为JavaScript中-是不能做属性、类名的。

操作float样式的时候

IE:obj.style.styleFloat=‘right';

其他浏览器:obj.style.cssFloat=‘right';

Form对象

常用:click(),focus(),blur();//相当于通过程序来触发元素的单击、获得焦点以及失去焦点的事件。

form对象是表单的Dom对象。

方法:submit()提交表单,但是不会触发onsubmit事件。

实现autopost,也就是焦点离开控件以后页面立即提交,而不是只有提交submit按钮以后才提交,当光标离开的时候触发onblur事件,在onblur中调用form的submit方法。

在点击submit后form的onsubmit事件被触发,在onsubmit中可以进行数据校验,如果数据有问题,返回false即可取消提交

以上所述就是个人对于javascript的DOM的理解了,希望大家能够喜欢。

Javascript 相关文章推荐
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
Oct 14 Javascript
js实现照片墙功能实例
Feb 05 Javascript
javascript点击按钮实现隐藏显示切换效果
Feb 03 Javascript
微信小程序  modal弹框组件详解
Oct 27 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
Feb 13 Javascript
vue动态组件实现选项卡切换效果
Mar 08 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
Dec 03 Javascript
vue移动端屏幕适配详解
Apr 30 Javascript
微信小程序云开发之使用云存储
May 17 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
javascript中的正则表达式使用指南
Mar 01 #Javascript
JQuery中使文本框获得焦点的方法实例分析
Feb 28 #Javascript
jQuery实现折线图的方法
Feb 28 #Javascript
js中split和replace的用法实例
Feb 28 #Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
Feb 28 #Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
Feb 28 #Javascript
js实现同一页面可多次调用的图片幻灯切换效果
Feb 28 #Javascript
You might like
有关PHP中MVC的开发经验分享
2012/05/17 PHP
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
javascript计时器详解
2015/02/28 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
在Python的Django框架中创建语言文件
2015/07/27 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python中psutil的介绍与用法
2019/05/02 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
自荐信格式技巧有哪些呢
2013/11/19 职场文书
金陵十三钗观后感
2015/06/04 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书