你所不了解的javascript操作DOM的细节知识点(一)(4)

<div></div> var test = document.getElementById("test"); console.log(test.tagName); // DIV console.log(test.nodeName); // DIV console.log(test.nodeValue); // null; console.log(test.parentNode); // body console.log(test.nodeType); // 1

理解HTML元素中的获取属性的方法

所有HTML元素都由HTMLElement类型表示,HTMLElement类型直接继承Element;如果想要取得HTML元素的特性的话,有下面几个方法:

getAttribute(); 获取元素的属性的方法;如下测试代码:

<div title="aa"></div> var test = document.getElementById("test"); console.log(test.getAttribute("id")); // test console.log(test.getAttribute("class")); // testName console.log(test.getAttribute("title")); // aa

注意:上面的获取类名在IE8+及标准浏览器下都是使用获取属性class来取得类名,上面的如果在IE7下会返回null, 但是在IE7及以下是使用className这个属性来获取的;如下代码:在IE7下测试:

console.log(test.getAttribute("className")); // testName

当然也可以取得自定义的属性;如下代码:

<div data-value="test1"></div>

console.log(test.getAttribute("data-value")); // test1

setAttribute() 设置元素的属性;该方法接收2个参数,第一个参数是属性名称,第二个参数是对应的值;如果该值存在,则会以现在的值替换之前的值,如果属性名不存在,则会创建该属性,并指定该属性的值;如下代码:

<div></div> // JS代码如下: var test = document.getElementById("test"); test.setAttribute("id",'test'); test.setAttribute("class","testName"); test.setAttribute("title","aa"); test.setAttribute("data-value","test1");

生成HTML结构如下:

<div title="aa" data-value="test1"></div>

removeAttribute(); 删除元素的特性;如下代码:

<div title="aa" data-value="test1"></div>

JS代码如下:

var test = document.getElementById("test"); test.removeAttribute("id"); test.removeAttribute("class"); test.removeAttribute("title"); test.removeAttribute("data-value");

IE7及以下删除类名需要使用className;

attributes属性

Element类型是使用attributes属性的唯一一个dom节点类型,attributes属性包含一个NamedNodeMap集合;该对象有以下方法:

getNamedItem(name): 返回nodeName属性等于name的节点;

attributes属性中包含一系列节点,每个节点的nodeName就是特性的名称,而节点的nodeValue就是节点值,要取得元素id的特性,如下代码:

<div title="aa" data-value="test1"></div>JS代码如下:

复制代码 代码如下:


var div = document.getElementById("test");
var id = div.attributes.getNamedItem("id").nodeValue;
console.log(id);  // test

我们也可以通过中括号的语法来获取的,如下代码:

复制代码 代码如下:


var id = div.attributes['id'].nodeValue;
console.log(id); // test

同样我们也可以通过上面介绍的getAttribute(“id”)方法来获取元素,如下代码:

console.log(div.getAttribute("id")); // test

也可以通过以下方法给元素设置id,如下方法:

div.attributes["id"].nodeValue = "aa";

removeNamedItem(name): 从列表中移除nodeName属性等于name的节点;

调用removeNamedItem()方法与在元素上调用removeAttribute()方法的效果相同,是直接删除具有给定名称的特性。他们之间的区别是:removeNamedItem()方法返回表示被删除特性的节点;

如下代码:

<div title="aa" data-value="test1"></div>

JS代码如下:

复制代码 代码如下:


var div = document.getElementById("test");
var oldAttr = div.attributes.removeNamedItem("id");
console.log(oldAttr); // 返回是被删除的节点 

现在的html结构变成如下:

<div title="aa" data-value="test1"></div>

如上方法:目前IE,firefox,chrome浏览器都支持;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgdxgp.html