DOM-节点概念-属性

Posted xixiaijunjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DOM-节点概念-属性相关的知识,希望对你有一定的参考价值。

 

 

1、节点的概念

页面中的所有内容,包括标签,属性,文本(文字,空格,回车,换行等),也就是说页面的所有内容都可以叫做节点。

2、节点相关的属性

2.1、节点分类

**标签节点:**比如 div 标签,p 标签等。

**属性节点:**比如 class,value 等。

**文本节点:**比如闭合标签中的文本内容。

 

2.2、节点属性

nodeType:节点的类型,它的值有 1,2,3 三种。

? 标签节点:值为 1

? 属性节点:值为 2

? 文本节点:值为 3

nodeName:节点的名字

? 标签节点:大写的标签名字

? 属性节点:小写的属性名字

? 文本节点:#text

nodeValue:节点的值

? 标签节点:null

? 属性节点:属性的值

? 文本节点:文本内容

注:用节点属性来确定并获取标签元素。例如如下代码。

获取节点然后判断是否是p标签节点。

if((nodes[i].nodeType === 1) && (nodes[i].nodeName === "P")) {
        nodes[i].style.backgroundColor = "blue";
}

 

3、元素的属性

3.1属性的方法

1,//而是要 获取标签里里面的自定义属性。

var score = this.getAttribute("score");
//不能通过 this.score 来获取。因为dom对象中没有这个 score 属性。

2,移除元素自带的还有自定义的属性

my$("dv").removeAttribute("score");
my$("dv").removeAttribute("class");

 

3,设置自定义属性

ist[0].setAttribute("score","10");
list[1].setAttribute("score","50");         //score= 50;
list[2].setAttribute("score","100");
var score = this.getAttribute("score");
alert(score);

 

boxObj.attributes; // 返回元素所有属性集合对象
boxObj.attributes.length;//返回属性节点个数、
boxObj.attributes[0]; //返回第一个属性节点 (id="first")
boxObj.attributes[‘id‘]; //返回属性为 id 的节点

**注意:**getAttribute的获取属性只能是行内样式才可以。

如 style 在行内样式可以使用 boxObj.style.color 获取到,如果是外部样式是获取不到的,但是设置可以。

外部样式获取使用 :window.getComputedStyle(boxObj)["color"]

但是 IE8 不支持。

封装获取任意元素的任意一个属性值

function getStyle(element, attr) {
    return window.getComputedStyle ?
        window.getComputedStyle(element, null)[attr] :
        element.currentStyle[attr];
}

4、获取节点和元素的12行代码

父元素 父节点 子元素 子节点 兄弟元素 兄弟节点

<!DOCTYPE html>
<html lang="en"> 
<head>
  <meta charset="utf-8">
  <title>比较全的获取相关节点</title>
</head>
<body>
    <div id="dv">
        <p id="pid">p标签</p>
        <span>span标签</span>
        <ul id="uu">
            <li>li标签
             <span>ni</span>
            </li><li>li标签</li><li id="three">li标签</li>知己
            <li>li标签</li>天涯
            <li>li标签</li>若比邻
        </ul>
    </div>

    <script src="common.js"></script>
    <script>
        var ulObj = my$("uu");
        // 父节点
        console.log(ulObj.parentNode);
        // 父元素
        console.log(ulObj.parentElement);
        // 子节点
        console.log(ulObj.childNodes);//11
        // 子元素
        console.log(ulObj.children);//5
        
// ------------------------------------------------
        // 第一个子节点
        console.log(ulObj.firstChild);//#text
        // 第一个子元素
        console.log(ulObj.firstElementChild);
        // 最后一个子节点
        console.log(ulObj.lastChild);
        // 最后一个子元素
        console.log(ulObj.lastElementChild);
        // 某个元素的前一个兄弟节点
        console.log(my$("three").previousSibling);
        // 某个元素的前一个兄弟元素
        console.log(my$("three").previousElementSibling);
        // 某个元素的后一个兄弟节点
        console.log(my$("three").nextSibling);
        // 某个元素的后一个兄弟元素
        console.log(my$("three").nextElementSibling);

        // 1、以上前四个,chrome, firefox, IE8 都支持 

        // 2、后面八个,chrome,firefox支持,IE8下,所有获取节点的操作都获取的是元素,所有获取元素的操作都是 undefined。

    </script>
</body>
</html>

5,创建元素的三种方法

方式一

document.write("标签代码及内容");

缺陷:如果是在页面加载完毕后,通过这种方式创建元素的话,页面上的除此创建元素之外的所有内容都会被清除。但是在页面加载的时候不会。

方式二

标签.innerHTML = "标签代码及内容";

方式三

第一步:创建元素,返回值为一个对象元素

document.creatElement("标签的名字");

第二步:将元素追加到父元素中

父元素.appendChild(创建的对象);

2、DOM元素增删改查

appendChild(ele):追加元素ele

insertBefore(newEle, oldEle): 在oldEle元素前添加newEle

removeChild(ele):删除元素ele(或者子元素自杀 ele.remove();

replaceChild(newEle, oldEle):将oldEle修改为newEle元素

 

 

 

 

注意:内容摘录自:https://github.com/Daotin/Web/tree/master/04-DOM

若想详细了解,请跳转到此连接。

 

 

 

以上是关于DOM-节点概念-属性的主要内容,如果未能解决你的问题,请参考以下文章

DOM探索之基础详解——学习笔记

第3章 DOM基本概念以及基本属性和方法

DOM核心API及其相关重要概念的理解

jQuery的DOM操作

javascript操作DOM节点

深入理解DOM节点类型第四篇——文档片段节点DocumentFragment