jselement类型的属性和⽅法整理
Element类型
除了Document类型,我们Web编程中最常⽤的类型就是Element类型啦.Element 类型⽤于表现XML或HTML元素,提供了对元素标签名,⼦节点,特性的访问
特征
nodeType值为1
nodeName为元素标签名
nodeValue为null
parentNode可能是Document或Element
⼦节点可能是Element,Text,Comment,ProcessingInstruction,CDATASection,EntityReference
其中nodeName和tagName属性返回相同的值,推荐使⽤tagName,则表义更清晰,值得注意的是返回值⼤⼩写的问题,由于HTML中为答谢,⽽XML/XHTML则会与源代码保持⼀致,所以⽐较时要统⼀⼤⼩写形
式.
HTML元素
HTML元素都由HTMLElement类型表⽰,不直接通过该类型,也是通过它的⼦类型表⽰.HTMLElement类型继承⾃Element并且添加了⼀些属性如下:
id 元素在⽂档中的唯⼀标识符
title 元素的附加说明信息,⼀般为⼯具提⽰条显⽰
lang 元素内容的语⾔代码,很少使⽤
dir 语⾔⽅向,ltr为从左到右,rtl则相反
className 与元素class的特性对应,没有设置为class则是因为class为ECMAScript的保留字
注意以上属性的修改并不是所有都会在页⾯中直观的表现出来,id和lang修改对⽤户来说是不可见的(假设没有css样式),对title的修改则只会在⿏标移动到元素上时才会显⽰出来(⼯具提⽰条),dir的修改则会在属性重写的那⼀刻⽴刻影响页⾯中的⽂本,对className的修改则与是否关联了不同的CSS样式有关.
特性
HTML元素每个元素都有⼀个或多个特性,操作特性的DOM⽅法如下有三个:
getAttribute()
setAttribute()
removeAttribute()
这三个⽅法可以针对任何特性使⽤,包括⾃定义特性.但是只有公认的特性才会添加到DOM元素属性上,⾃定义的特性通常是不存在的(undefined),当然这⾥⼜要注意我们的”好朋友”IE啦,它会为⾃定义特性创建属性.
特殊特性
主要针对getAttribute()⽅法讲述⼀下特殊情况.
有两类特殊特性,有对应的属性名,但值与getAttribute()返回的值并不相同
style,通过getAttribute()访问会返回CSS⽂本,⽽通过属性访问返回⼀个对象
onclick这样的事件处理程序,通过getAttribute()访问会返回相应代码的字符串.⽽属性访问时,则会返回⼀个JavaScript函数(未指定则为null)
故通常只有取得⾃定义特性值的情况下,才会使⽤getAttribute()⽅法.
注意!:我们的”⽼朋友”IE7及以前版本中,getAttribute()⽅法访问上述两个特殊特性时,返回的值与属性的值相同.即getAttribute("style")返回⼀个对象,getAttribute("onclick")返回⼀个函数.
设置特性
这⾥主要讲解下setAttribute()⽅法,这和getAttribute()相对应.这个⽅法接受两个参数,要设置的特性名和值,如果特性存在则将值进⾏替换;不存在则创建并设置相应的值.
值得注意的是,设置特性名会转换为⼩写.⽽且直接给DOM元素添加⼀个⾃定义的属性并不会让这个属性成为元素的特性.
lor="red";
Attribute("mycolor"); //这⾥返回null(IE除外)
移除特性
removeAttribute()⽅法⽤于彻底删除元素特性,调⽤该⽅法会清除特性的值并完全删除特性.
注意!:IE6及以前版本不⽀持该⽅法.
attributes属性
Element类型是使⽤attributes属性的唯⼀⼀个DOM节点类型.在该属性中包含⼀个NamedNodeMap,与NodeList类似,也是”动态”集合.元素每⼀个特性都由⼀个Attr节点表⽰,每个节点都保存在NamedNodeMap对象中.相关⽅法如下:
getNamedItem(name)返回nodeName属性等于name的节点
removeNamedItem(name)从列表移除nodeName等于name的节点
setNamedItem(node)向列表添加节点,以节点的nodeName属性为索引
item(pos)返回处于数字pos位置处的节点
在该属性中有⼀系列的节点,每个节点的nodeName就是特性的名称,nodeValue就是特性的值.要取得元素的id特性,可以使⽤
等同于attributes["id"].nodeValue
调⽤removeNamedItem()与在元素上调⽤removeAttribute()效果相同.
setNamedItem()是⼀个很不常⽤的⽅法,该⽅法可以为元素添加⼀个新特性,此外需要为它传⼊⼀个特性节点.
注意!:IE7及更早版本会返回HTML元素中所有可能的特性,包括没指定的特性.
针对低版本改进:每个特性节点都有⼀个名为specified的属性,如果为true则意味着要么HTML中指定了相应特性,要么通过setAttribute()设置了该特性,在IE中未设置过的特性都为false,其他浏览器则不会为这类特性⽣成对应特性节点.
创建元素
该⽅法接受⼀个参数,就是元素标签名,这个标签名在HTML下不区分⼤⼩写,XML中则会区分⼤⼩写.
在创建新元素的同时,新元素也设置了ownerDocument属性,此时,还可以操作元素特性,为它添加更多的⼦节点.
在设置完特性后,由于未添加到⽂档树,所以⼀切特性都不会影响浏览器的显⽰.我们可以通过之前讲到的
appendChild(),insertBefore(),replaceChild()⽅法来进⾏相应的操作.
⼀旦添加到⽂档树,则浏览器会⽴刻呈现该元素.此后我们的修改都会反应到浏览器中.
注意!(常不考虑):在IE中我们可以通过另⼀种⽅式进⾏创建
这个⽅式可以避开IE7及更早版本中动态创建元素的某些问题.(不能设置动态创建的iframe元素的name特性;不能通过表单的reset()⽅法重设动态创建的input元素;动态创建的type特性值为”reset”的button元素重设不了表单;动态创建的⼀批name相同的单选按钮彼此毫⽆关系)
js获取子元素元素⼦节点
除了IE,其他浏览器解析代码时会解析空⽩符为⽂本节点.我们可以通过nodeType属性的检查来过滤掉它们
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论