轻轻松松Attr类型
元素数据在DOM中通过Attr类型表示。Attr类型构造函数和原型在所有浏览器中都可以直接访问。技术上讲,属性是存在于元素attribute属性中的节点。Attr节点具有一下特征:
-
nodeType等于2;
-
nodeName值为属性名;
-
nodeValue值为属性值;
-
parentNode值为null;
-
在HTML中不支持子节点;
-
在XML中子节点可以是Text或者EntityReference。
属性点尽管都是节点,却不被认为是DOM文档树的一部分。Attr节点很少直接被引用通常开发者更喜欢使用getAttribute(),removerAttribute()和setAttribute()方法操作属性。
Attr对象上有3个属性:name,value和specified。
其中,那么包含属性名(与nodeName一样),value包含属性值(与nodeValue一样),而specified是一个布尔值,表示属性使用的是默认值还是被指定的值。
可以使用document.createAttribute()方法创建行的Attr节点,参数为属性名。比如,要给元素添加align属性,可以使用以下代码:
let attr = document.createAttribute("align");
attr.value = "left";
element.setAttributeNode(attr);
alert(element.attributes["align"].value); //"left"
alert(element.getAttributeNode("align").value); //"left"
alert(element.getAttribute("aoign")); //"left"
在这个例子中,首先创建了一个新属性。调用createAttribute()并传入"align"为新属性设置了name属性,因此就不用再设置了,随后,value属性被赋值为"left"。为把这个新属性添加到元素上,可以使用元素的setAttributeNode()方法。添加这个属性后,可以通过不同的方式访问它,包括了attributes属性,getAttrbuteNode()和getAttribute()方法。其中attributes属性和getAttributeNode()方法都返回对应的Attr节点而getAttribute()方法只返回属性的值。
将属性作为节点来访问大多数情况下并无必要 | |
---|---|