Element类型

Element类型用于表现XML或HTML元素,提供对元素标签名、子节点及特性的访问,它具有以下特征

nodeType的值为1;

nodeName的值为元素的标签名;

nodeValue的值为null;

parentNode可能是Document或Element;

要访问元素的标签名可以使用nodeName属性或者tagName属性,两者返回相同的值

<div id="myDiv"></div>

var div=document.getElementById("myDiv");

alert(div.nodeName);  //"DIV"

在HTML中,标签名始终全部大写,而在XML(有时候也包括XHTML)中,标签名始终与源代码保持一致,可用toLowerCase()转化为小写形式

HTML元素

所有HTML元素都由HTMLElement类型表示,不是直接通过这个类型,而是通过它的子类型

HTMLElement类型直接继承自Element并添加了一些属性,每个HTML元素都有下列标准特性:

id,元素在文档中的唯一标识符;

title,附加说明信息,一般通过工具提示条显示出来

lang,元素内容的语言代码,很少使用

dir,语言的方向值为"ltr""rtl"也比较少使用

className,与元素的class特性对应

<div id="myDiv" class="bd" title="Body text" lang="en" dir="ltr"></div>

var div=document.getElementById("myDiv");

alert(div.id);  //"myDiv"

    ...

alert(div.dir);  //"ltr"(通过特性属性访问)

也可以直接赋值

div.id="someOtherId";

    ...

div.dir="rtl";

取得特性

var div=document.getElementById("myDiv");

alert(div.getAttribute("id"));  //"myDiv"(通过getAttribute()访问)

    ...

alert(div.getAttribute("class"));  //"bd" 非"className"

特性不区分大小写,ID与id代表同一个特性,如果给定名称的特性不存在,返回null

getAttribute(一个自定义特性名称);  //根据HTML5规范,自定义特性要加前缀data-以便验证

只有公认的(非自定义的)特性才会以属性的形式添加到DOM中,IE会为自定义特性也创建属性

alert(div.my_special_attribute);  //undefined(IE除外)

有两类特殊的特性,通过getAttribute()访问和通过特性属性访问返回的值并不一样:

1.style通过getAttribute()访问返回的是特性值中包含的css文本,通过特性属性访问返回一个对象

2.像onclick这样的事件处理程序,通过getAttribute()访问返回的是相应代码的字符串,通过特性属性访问返回一个JavaScript函数

因此开发人员不常使用getAttribute(),只使用对象的属性,只有在取得自定义特性值得情况下才会用getAttribute()方法

设置特性

getAttribute()对应setAttribute(),接收2个参数要设置的特性名和值,若已存在则替换,不存在则创建

div.setAttribute("id","someOtherId");

setAttribute()也可以操作自定义特性,通过这个方法设置的特性会被统一转换为小写形式"ID"变成"id"

自定义属性不会当作元素的特性

div.mycolor="red";

alert(div.getAttribute("mycolor"));  //null(IE除外)

最后一个方法removeAttribute(),彻底删除元素的特性

div.removeAttribute("class");

attributes属性

Element类型是使用attributes属性的唯一一个DOM节点类型,attributes属性包含一个NamedNodeMap,与NodeList类似,也是一个“动态”的集合,NamedNodeMap对象拥有下列方法:

getNamedItem(name):返回nodeName属性等于name的节点;

removeNamedItem(name):从列表中移除nodeName属性等于name的节点;

setNamedItem(node):向列表添加节点,以节点的nodeName属性为索引;

item(pos):返回位于数字pos位置的节点

attributes属性包含一系列节点,每个节点的nodeName就是特性的名称,nodeValue就是特性的值

var id=element.attributes.getNamedItem("id").nodeValue;

var id=element.attributes["id"].nodeValue;  //方括号的简写方式

element.attributes["id"].nodeValue="someOtherId";  //设置新属性值

var oldAttr=element.attributes.removeNamedItem("id");  //删除并返回给定名称的特性

element.attributes.setNamedItem(newAttr);  //添加新特性

NamedNodeMap对象的这些方法不够方便,不过在遍历是有比较大的用处

attrName=element.attributes[i].nodeName;

创建元素

document.createElement()方法接收一个参数,即要创建元素的标签名,最好小写(HTML不区分大小写,XML则区分大小写)

var div=ocument.createElement("div");

还可以为它添加更多特性

div.id="myNewDiv";

div.className="box";

这些新元素尚未添加到文档树中

元素的子节点

<ul id="myList">

  <li>Item1</li>

  <li>Item2</li>

  <li>Item3</li>

</ul>

在IE中算3个子节点,其他浏览器中算7个子节点,<li>之间的空格算4个文本节点,实际项目中注意这个差别,可以检查一下nodeType==1,另外元素也支持getElementsByTagName()方法

JavaScript高级程序设计24.pdf的更多相关文章

  1. JavaScript高级程序设计61.pdf

    JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...

  2. JavaScript高级程序设计60.pdf

    错误处理 try-catch语句 try{ //可能会导致错误的代码 }catch(error){ //在错误发生时如何处理 } error是一个包含着错误信息的对象,它有一个message属性,保存 ...

  3. JavaScript高级程序设计58.pdf

    15章 使用Canvas绘图 略 16章 HTML5脚本编程 HTML5规范了新的HTML标记和JavaScript API,以便简化创建动态Web界面的工作 跨文档消息传递 简称XDM,指来自不同域 ...

  4. JavaScript高级程序设计57.pdf

    表单序列化 首先了解一下浏览器如何将数据发送给服务器 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送type为“reset” ...

  5. JavaScript高级程序设计55.pdf

    输入模式 HTML5为文本字段新增了pattern属性,这个属性的值是一个正则表达式,用于匹配文本框中的值 例如,只想在允许在文本字段中输入数值 <input type="text&q ...

  6. JavaScript高级程序设计54.pdf

    过滤输入 对于一些浏览器,可以使用正则表达式里的text()测试用户按下的按键,Firefox和safari(3.1版本之前)会对向上向下.退格键和删除键触发keypress事件,在Firefox中, ...

  7. JavaScript高级程序设计53.pdf

    共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...

  8. JavaScript高级程序设计52.pdf

    表单脚本 表单的基础知识 在HTML中,表单是由<form>元素表示的,在Javascript对应的是HTMLFormElement类型,它继承自HTMLElement,因此具有与其他HT ...

  9. JavaScript高级程序设计50.pdf

    hashchange事件 HTML5新增了hashchange事件,以便在URL的参数列表(及URL中“#”号后面的所有字符串)发生变化时通知开发人员,之所以新增这个事件,是因为在Ajax应用中,开发 ...

随机推荐

  1. (hdu)5652 India and China Origins 二分+dfs

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5652 Problem Description A long time ago there ...

  2. IniParse解析类

    说明 iniParse这个类是一个解析ini文件的类,他的功能和Windows下GetPrivateProfileString的功能一样,可以很方便的保存读取配置. 当然他不是只有GetPrivate ...

  3. 如何设置 font-family 比较好以及字体的中英文名

    如何设置 font-family 比较好? 如果设置为font-family: Arial, "微软雅黑","宋体"; 是不是英文都会使用Arial字体,而中文 ...

  4. ng表单验证,提交以后才显示错误

    只在提交表单后显示错误信息 有时候不想在用户正在输入的时候显示错误信息. 当前错误信息会在用户输入表单时立即显示. 由于Angular很棒的数据绑定特性,这是可以发生的. 因为所有的事务都可以在一瞬间 ...

  5. OS概论1

    1.设计现代OS的主要目标是什么? 在计算机上配置操作系统,其主要目标是:方便性,有效性,可扩充性,开放性. 一个没有OS的操作系统,就必须用机器语言书写程序,如果在计算机上配置了OS,系统便可以使用 ...

  6. STM32之系统滴答定时器

    一.SysTick(系统滴答定时器)概述 操作系统需要一个滴答定时器周期性产生中断,以产生系统运行的节拍.在中断服务程序里,基于优先级调度的操作系统会根据进程优先级切换任务,基于时间片轮转系统会根据时 ...

  7. microsoft office visio基本使用方法

    以下是画流程图.程序内存分配等等框图用到的点滴使用方法,记录在这里以备偶尔只需. 1.画大括号“{}” 在Visio操作界面下,依次点击“文件(File)”—“形状(Shapes)”--“其他Visi ...

  8. 转:我们是否应该把后端构建为API

    原文来自于:http://www.infoq.com/cn/news/2015/07/api-or-not 不久前,在StackExchange网站上,一位名为SLC的用户提起他正在设计一个ASP.N ...

  9. 关于Java(Hello World程序)

    详解 Hello World 应用程序 源码 class HelloWorldApp { public static void main(String[] args) { System.out.pri ...

  10. 推荐一款不错的GIF录制软件附带.NET源码

    源码下载地址:http://www.51aspx.com/Code/ScreenToGif10