JavaScript高级程序设计21.pdf
第10章 DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口)
IE中所有DOM对象都是以COM对象的形式实现的,这意味着IE中的对象与原生JavaScript对象行为不一致
节点层次
总共有12种节点类型,这些类型都继承自一个基类型
Node类型
DOM1级定义了一个Node接口,该接口将由DOM中所有节点类型实现。除了IE以外其他浏览器都可以访问到这个类型,JavaScript中所有节点类型都继承自Node类型,共享着相同的基本属性和方法
if(someNode.nodeType==Node.ELEMENT_NODE){ //在IE中无效
alert("Node is an element.");
}
为了跨浏览器兼容,最好将nodeType属性与数字值进行比较
if(someNode.nodeType==1){ //适用所有浏览器
alert("Node is an element.");
}
nodeName和nodeValue属性
对于元素节点,nodeName中保存的始终是元素的标签名,nodeValue的值始终是null
节点关系
节点的各种关系可以用传统家族关系来描述
每个节点都有一个childNodes属性,其中保存着一个NodeList对象,它是一种类数组对象,可以通过方括号、item()方法来访问
var firstChild=someNode.childNodes[0];
var secondChild=someNode.childNodes.item(1);
var count=someNode.childNodes.length;
前面提到过对arguments对象使用Array.prototype.slice()方法可以将其转换为数组,而采用同样的方法,也可以将NodeList对象转换为数组
//在IE8及之前版本无效
var arrayOfNodes=Array.prototype.slice.call(someNode.childNodes,0)
由于IE8及更早版本将NodeList实现为一个COM对象,所以我们不能像使用JScript对象那样使用这种对象
function convertToArray(nodes){
var array=null;
try{
array=Array.prototype.slice.call(nodes,0);
}catch(ex){
array=new Array();
for(var i=0,len=nodes.length;i<len;i++){
array.push(nodes[i]);
}
}
return array;
}
每个节点都有一个parentNode属性,指向文档树中的父节点
previousSibling和nextSibling属性访问其他兄弟节点,第一个节点的previousSibling为null,最后一个节点nextSibling为null
hasChildNodes()在节点包含一个或多个子节点时返回true
ownerDocument属性指向表示整个文档的文档节点
JavaScript高级程序设计21.pdf的更多相关文章
- JavaScript高级程序设计61.pdf
JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...
- JavaScript高级程序设计60.pdf
错误处理 try-catch语句 try{ //可能会导致错误的代码 }catch(error){ //在错误发生时如何处理 } error是一个包含着错误信息的对象,它有一个message属性,保存 ...
- JavaScript高级程序设计58.pdf
15章 使用Canvas绘图 略 16章 HTML5脚本编程 HTML5规范了新的HTML标记和JavaScript API,以便简化创建动态Web界面的工作 跨文档消息传递 简称XDM,指来自不同域 ...
- JavaScript高级程序设计57.pdf
表单序列化 首先了解一下浏览器如何将数据发送给服务器 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送type为“reset” ...
- JavaScript高级程序设计55.pdf
输入模式 HTML5为文本字段新增了pattern属性,这个属性的值是一个正则表达式,用于匹配文本框中的值 例如,只想在允许在文本字段中输入数值 <input type="text&q ...
- JavaScript高级程序设计54.pdf
过滤输入 对于一些浏览器,可以使用正则表达式里的text()测试用户按下的按键,Firefox和safari(3.1版本之前)会对向上向下.退格键和删除键触发keypress事件,在Firefox中, ...
- JavaScript高级程序设计53.pdf
共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...
- JavaScript高级程序设计52.pdf
表单脚本 表单的基础知识 在HTML中,表单是由<form>元素表示的,在Javascript对应的是HTMLFormElement类型,它继承自HTMLElement,因此具有与其他HT ...
- JavaScript高级程序设计50.pdf
hashchange事件 HTML5新增了hashchange事件,以便在URL的参数列表(及URL中“#”号后面的所有字符串)发生变化时通知开发人员,之所以新增这个事件,是因为在Ajax应用中,开发 ...
随机推荐
- 一个jquery的图片下拉列表 ddSlick
[ddSlick]http://designwithpc.com/Plugins/ddSlick How to use with JSON data Include the plugin javasc ...
- ubuntu 13.04 xrdp 远程桌面连接问题[转载]
本人ubuntu12.04,遇到了同样的问题,用一下方法解决了,mark一下. ubuntu 13.04 xrdp 远程桌面连接问题. win 7 远程桌面连接 ubuntu desktop 有几种办 ...
- AngularJS code converage
karma-coverage The easiest way is to keep karma-coverage as a devDependency in your package.json. Mo ...
- BigDecimal类型的详情
一.简介 1.概述 BigDecimal由任意精度的整数非标度值和32位的整数标度(scale)组成.如果为零或正数,则标度是小数点后的位数.如果为负数,则将该数的非标度值乘以10的负scale次幂. ...
- autoreleasepool的笔记
1.autoreleasepool总是会被问到,放在自动释放池中的对象合适被释放?理解不正确的答案:{}出了大括号.出了作用域等等.个人认为参考答案是,1.在不是手动添加的AutoreleasePoo ...
- 网站开发常用jQuery插件总结(九)侧边栏插件pageslide
一.pageslide插件功能 实现现实隐藏侧边栏的功能.插件可以读取另个一html,也可以是当前页面中的元素. 二.pageslide官方地址 http://srobbin.com/jquery-p ...
- sql 命令操作用法
---恢复内容开始--- 远程登录数据库: mysql -u root -p 要求输入密码 ============== 查看数据库: show databases;============= 选择数 ...
- js 高级函数 之示例
js 高级函数作用域安全构造函数 function Person(name, age) { this.name = name; this.age = age; ...
- demo_03HTML5中的动画效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- css3 iphone开关 移动端开关、按钮、input
css3 iphone开关 移动端开关.按钮.input <!DOCTYPE html> <html> <head> <meta charset=&quo ...