HTML DOM之属性的各种操作方法

来源:互联网 发布:山东双轨直销软件 编辑:程序博客网 时间:2024/06/05 08:11

1.element.getAttribute(attributename)方法用来返回指定属性名的属性值,返回的类型是字符串类型

这里写图片描述

2.element.getAttributeNode(attributename)方法从当前元素节点(nodeType值为1的节点)element中通过名称获取属性节点(nodeType值为2的节点),返回值是指定的属性节点

这里写图片描述

3.element.setAttribute(attributename,attributevalue)方法添加指定的属性,并为其赋指定的值。如果这个指定的属性已存在,则仅设置/更改值,无返回值

4.element.setAttributeNode(attributenode)方法用来向元素中添加指定的属性节点。如果这个指定的属性已存在,则此方法会替换它

这里写图片描述

5.element.removeAttribute(attributename)方法用来删除指定的属性。没有返回值

注意:此方法与 removeAttributeNode() 方法的差异是:removeAttributeNode() 方法删除指定的 Attr 对象,而此方法删除具有指定名称的属性。结果是相同的。同时此方法不返回值,而 removeAttributeNode() 方法返回被删除的属性,以 Attr 对象的形式

6.element.removeAttributeNode(attributenode)方法用来删除指定的属性,并以 Attr Node 对象返回被删除的属性。返回值是Attr类型的对象

7.element.hasAttribute(attributename)方法用来判断如果存在指定属性,则 hasAttribute() 方法返回 true,否则返回 false

8.node.hasAttributes()方法用来判断节点(不仅仅是元素节点element)是否拥有属性,拥有属性则返回true,否则返回false。如果指定节点不是元素节点,则返回值始终是 false。

注意:

**- Node(节点)是DOM层次结构中的任何类型对象的通用名称,Node有很多类型,如元素节点(element),属性节点(attr),文本节点(text),注释节点(comments)等,通过NodeType区分

**- Element继承了Node类,也就是说Element是Node多种类型中的一种,即当NodeType为1时Node即为ElementNode,另外Element扩展了Node,Element拥有id、class、children等属性

**- 简单的说就是Node是一个基类,DOM中的Element,Text和Comment都继承于它。 换句话说,Element,Text和Comment是三种特殊的Node,它们分别叫做ELEMENT_NODE, TEXT_NODE和COMMENT_NODE

那么下面为什么”document.body.childNodes.length”的结果是9呢?

这里写图片描述

实际上Node表示的是DOM树的结构,在html中,节点与节点之间是可以插入文本的,这个插入的空隙就是TEXT_NODE

这里写图片描述

这下就顺理成章了,body的直系元素(3)+ COMMENT_NODE(1) + TEXT_NODE(5) = 9

注意:我们用childNodes找到了NodeList,但我们操作DOM时往往不想操作Node(我只想操作元素Element),那么如何获取ElementList呢?其实我们经常使用的getElementsByXXX返回的就是一个ElementList,只不过它的真实名字是ElementCollection。就像NodeList是Node的集合一样,ElementCollection也是Element的集合。但需要特别注意的是:NodeList和ElementCollcetion都不是真正的数组。如果document.getElementsByTagName(‘a’) instanceof Array,那么必然是false。

原创粉丝点击