Element和Attr节点
Element节点为元素节点,对应着html页面中具体的标签
nodeType为1
nodeName为相应的标签的名
nodeValue为null
Attr为特性节点,对应着每个标签中的属性,它是一个节点,但是不存在于DOM的节点树当中
nodeType为11
nodeName为属性的名称
nodeValue为属性具体的值
<div class="abc" id="_id" dir="ltr" title="_title"></div>
上面一段代码定义了div的 class(在js中调用class元素时要使用className)dir(从左到右还是从右到左)title等属性
当得到div对象后,假设对象名为div
1 可以得到
div.className
div.id
div.dir
div.title
可以得到这些属性的值
同时可以对这些属性的值进行修改
同时也可以添加属性
例如div.align="center"
alert(div.id)
div.id="a"
2 setAttribute():可以修改属性的值,也可以添加属性
例如div.setAttribute("id","abc")
div.setAttribute("other","kkk")//自己增加的属性
div.setAttribute("align",“center”)//增加div具有的属性
getAttribute():得到属性的值,即可以得到系统具有的属性的值,也可以得到自己定义的属性的值
div.getAttribute("id")//得到_id
removeAttribute() 删除属性
3attributes属性
每个元素都有attributes属性,每个attributes属性有
getNamedItem()
setNamesItem()
removeNamedItem()
Item()
四个方法
还有一个length属性,代表属性的个数
getNamedItem():得到某一个属性的节点
div.attributes.getNamedItem("id")//返回id属性的节点 也可以写成div.attributes["id"]
div.attributes.getNamedItem("id").nodeValue//得到id属性的值,_id
setNamedItem():为元素添加属性
div.attributes.getNamedItem(newAttr)//newAttr为新创建的元素,添加到了div中
removeNamedItem():删除属性
div.attributes.removeNamedItem("id")//删除了id属性
item():得到某一位置的属性
div.attributes.item(2)//得到第三个,即dir属性 也可以写成div.attributes[2]
div.attributes.length 得到属性的个数
attributes属性是和NodeList一样动态变化的,即每增加一个属性,会马上在attributes.length中得到反映
每个属性都有specified属性,为Boolen属性,如果为真,表明这个属性是在元素中定义了或者用js的方法添加到元素中了
如果为假,则说明没有这个元素
attributes主要用于属性的遍历
var arr=new Array();
for(var i=0,var len=div.attributes.length;i<len;i++)
{
if(div.attributes[i].specified)
{
arr.push(div.attributes[i].nodeValue);
}
}
Attr节点
1它有三个属性
name:属性节点的名,相当于nodeName
value:属性节点的值,相当于nodeValue
specified:该属性节点是否被添加到了标签中
例如上面的div.attributes[i]就是一个属性节点
可以获取他的name,value,specified
它有两个方法
createAttribute():创建节点
setAttributeNode();将创建的节点添加到元素中
var ali=document.createAttribute("align")//创建了一个align属性节点
align="center"//为属性节点赋值
div.setAttributeNode(ali)//将属性节点添加到div中