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. AJAX 一些常用方法

    abort() 停止当前请求getAllResponseHeaders() 返回包含HTTP请求的所有响应头信息,其中响应头包括Content-Length,Date,URI等内容.getRespon ...

  2. jira汉化,破解,升级

    交给我这个任务,我先在网络上查了,好些资料,先实验的是6.3.6版本的,这个安装包我是从csdn上下载的.tar.gz的安装,汉化过程也都没有问题.但是在运行过程中不显示下拉菜单,于是我又在官网下载的 ...

  3. 调度思路+EurekaServer获得当前机器的instanceid

    调度思路 概念 Build 一次完整的构建 整个流水线 Task(BuidStep) 流水线中的某一个步骤单元 先假设对于一个Build(流水线)而言里面所有Task是串行执行的 并且各Task之间不 ...

  4. Log4j 密码屏蔽

    Log4j filter to mask Payment Card numbers (PCI DSS) According to PCI DSS (Payment Card Industry Data ...

  5. MarkDown教程

    MarkDown笔记 在线编辑器其他教程 [1.标题] 标题1 标题1=== 标题2 标题2--- 标题3 1 2 3 4 5 6 7 7 #1 ##2 ###3 ####4 #####5 ##### ...

  6. wampserver下升级php7

    1.下载php7   http://windows.php.net/download#php-7.0 选择 VC14 x86 Thread Safe  64位选X64 32位选X86 2.下载VC14 ...

  7. python 数据类型(元组(不可变列表),字符串

    元组(不可变列表) 创建元组: ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55)) 一般情况下是不需要被人该的数值才使用元 ...

  8. 使用ajax传递及接收数据

    前端代码: <input id="txtNum1" name="txtNum1" type="text" width="13 ...

  9. 和阿木聊Node.js

    npm:node.js官方库 cnpm:taobao维护的库: WebStorm:Node.js的开发工具,但是收费: seajs:还有一款交requirjs,前者是遵循amd规范(一次性参数中加载要 ...

  10. android SurfaceView绘制 重新学习--基础绘制

    自从大二写了个android游戏去参加比赛,之后就一直写应用,一直没用过SurfaceView了,现在进入了游戏公司,准备从基础开始重新快速的学一下这个,然后再去研究openGL和游戏引擎. 直接上代 ...