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应用中,开发 ...
随机推荐
- 15第十五章UDF用户自定义函数(转载)
15第十五章UDF用户自定义函数 待补上 原文链接 本文由豆约翰博客备份专家远程一键发布
- 使用openrowset跨库查询
--insert fj_studentinfo--select *--from-- openrowset('SQLOLEDB','localhost';'sa';'password',dbname. ...
- SQL Server备份还原数据库中的小把戏
备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support 1 media families, but 2 media families are expected ...
- 给分类(Category)添加属性
遇到一个问题,写了一个分类,但原先类的属性不够用.添加一个属性,调用的时候崩溃了,说是找不到getter.setter方法.查了下文档发现,OC的分类允许给分类添加属性,但不会自动生成getter.s ...
- vector预分配空间溢出
vector 当一个vector预分配的存储空间用完之后,为维护其连续的对象数组,它必须在另外一个地方重新分配大块新的(更大的)存储空间,并把以前已有的对象拷贝到新的存储空间中去. // A clas ...
- 倒置字符串s中各字符的位置
倒置字符串s中各字符的位置 其中reverse函数可以写成更紧凑的形式 void reverse(char s[]){ int c,i,j; ,j=strlen(s)-;i<j;i++,j--) ...
- SlidesJS 3.0.4 在手机上遇到的一些问题及解决办法
SlidesJS 3.0.4 http://slidesjs.com 在手机上遇到的一些问题及解决办法 1.手机上打开有sliderjs的页面后, 切换到别的页面再回来时, sliderjs部分不能滑 ...
- 自定义函数中的参数返回值 “-> (Int -> Int)”的问题
func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { + number } retur ...
- 存储过程修改产品描述页图片alt描述信息
今天修改了所有产品的图片信息,用到了存储过程.在参考下面存储过程以后,终于搞定了. 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentL ...
- Silverlight中在MVVM模式下对DatagridRow选择控件封装
在项目中,凡是涉及到表格的地方用的最多的控件,自然少不了DataGrid的身影,它明了的展示各种数据让人十分喜欢.现在要实现一个功能,使DataGrid具有全选和项选中的功能,如果在传统后台代码中完成 ...