JavaScript学习的第十二天

**DOM文档对象模型

-当网页被加载时,浏览器会创建DOM,DOM属于BOM的一部分,对doucument的操作。

-HTML DOM被构造为对象的树 DOM树。

-DOM树包含HTML元素,HTML文本,HTML属性。

-JavaScript通过DOM可以改变HTML元素,文本,属性(css样式),事件做出反应。

###1、DOM操作HTML

-元素

-文本

-属性

###2、DOM操作css

- style

###3、DOM事件

-鼠标事件

-键盘事件

-表单事件

-窗口事件

-event事件对象

***1、通过标签名,id名,类名,name获取元素

1.1、通过id名获取元素  唯一

 getElementById("id名")

var oHeader=document.getElementById("header2");
console.log(oHeader);

1.2、通过class获取元素 一个或多个

getElementsByClassName("class名")

HTMLCollection 集合 类似与数组 伪数组

var aText=document.getElementsByClassName("text");
console.log(aText);
console.log(aText[0]);
console.log(aText[1]);

1.3、通过标签名获取元素  一个或多个

getElementsByTagName("标签名")

HTMLCollection 集合 类似与数组 伪数组

var aItem=doucument.getElementsByTagName("p");
console.log(aItem);

1.4、通过name获取元素  主要用于form表单

getElementsByName("name名")

Nodelist  节点列表  伪数组

var aSex=doucument.getElementsByName("sex");
console.log(aSex);
console.log(aSex[0]);
console.log(aSex[1]);

1.5、getElementsByTagNameNS()  获取多种元素

console.log(document.getElementsByTagNameNS("p","span"));

1.6、获取根节点  getRootNode()

console.log(document.getRootNode());

***2、通过选择器的方式  selector

2.1、querySelector()  获取一个元素

 id选择器  class选择器  标签选择器  ,选择器  后代选择器  亲代选择器

var oHeader=document.querySelector("#header2");
console.log(oHeader);
var oText=document.querySelector(".text");
console.log(oText);//第一个
var oSpan=document.querySelector("span");
console.log(oSpan);
var oEls=document.querySelector("#header2,.text,span");
console.log(oEls);

2.2、querySelectorAll()  获取多个元素

    var aEls=document.querySelectorAll("#header2,.text,span");
    console.log(aEls);
    var aText=document.querySelectorAll(".text");
    console.log(aText);

    var aItem=document.getElementsByTagName("li");//动态
    var aItem2=document.querySelectorAll("li");//静态
    console.log(aItem);
    console.log(aItem2);

    var oList=document.getElementById("list");
    var oRemove=document.getElementById("remove");
    oRemove.onclick=function(){
        oList.removeChild(aItem2[0]);
    }

***3、DOM的节点

    <div id="wrap"><a href="http://www.baidu.com">百度一下</a>
        <h2 id="header2">这是一个h2标签</h2>
        <p class="text">这是一个段落标签1</p>
        <p>这是一个段落标签2</p>
        <p>这是一个段落标签3</p>
        <span class="text">这是一个文本标签1</span>
        <span class="text">这是一个文本标签2</span>
        <form>
            <input type="text" name="user"><br>
            <input type="password" name="psw"><br>
            <input type="radio" name="sex">男
            <input type="radio" name="sex">女
        </form>
        <p name="sex">这是有name属性的段落标签</p>
    </div>
    <ul id="list"><!-- 这是一个注释 -->
        <li>菜单1</li>
        <li>菜单2</li>
        <li>菜单3</li>
        <li>菜单4</li>
        <li>菜单5</li>
    </ul>
    <button id="remove">移除</button>
    var oHeader = document.getElementById("header2");
    var oText = document.getElementsByClassName("text")[0];
    var oItem = document.getElementsByTagName("p")[0];
    var oSex = document.getElementsByName("sex")[0];
    var oWrap = document.getElementById("wrap");
    var oList = document.getElementById("list");

**nodeType  返回节点类型   对象.nodeType

 1.元素节点    返回1

    console.log(oHeader.nodeType); //1
    console.log(oText.nodeType); //1
    console.log(oItem.nodeType); //1
    console.log(oSex.nodeType); //1

 2.属性节点   返回2

    var attrNode = oHeader.getAttributeNode("id");
    console.log(attrNode.nodeType);

 3.文本节点   返回3

    var content = oHeader.firstChild; //获取第一个子节点
    console.log(content.nodeType);

 4.注释节点   返回8

console.log(oList.firstChild.nodeType);

5. document   返回9

console.log(document.nodeType);

**nodeName  返回节点名称

元素节点  返回大写的标签名 

    console.log(oHeader.nodeName); //H2
    console.log(oText.nodeName); //P

属性节点  返回属性名

console.log(attrNode.nodeName); //id

文本节点   #text

console.log(content.nodeName); //#text

 注释节点   #comment

console.log(oList.firstChild.nodeName);

 **nodeValue  返回节点值

元素节点  null 

    console.log(oHeader.nodeValue); //
    console.log(oText.nodeValue); //
    console.log(oItem.nodeValue); //
    console.log(oSex.nodeValue); //
    console.log(oWrap.nodeValue);

 属性节点  返回属性值

console.log(attrNode.nodeValue); //header2

 文本节点   返回文本内容

console.log(content.nodeValue); //这是一个h2标签

 注释节点   返回注释内容

console.log(oList.firstChild.nodeValue);

***4、DOM元素的属性

    <button id="tab">切换</button>
    <button id="remove">移除</button>
    <button id="add">添加</button>
    <div id="box" class="box" style="border: 10px solid green;"> 
        <a href="http://www.baidu.com">百度一下</a>
        <p id="text" class="text">这是一个段落标签</p>
        <span>这是一个文本标签</span>
        <ul class="list">
            <li class="item">菜单01</li>
            <li>菜单02</li>
            <li>菜单03</li>
        </ul>
        <img src="./DOM树.png" alt="这是DOM树">
    </div>
    var oBox = document.getElementById("box");
    var aList = document.getElementsByClassName("list")[0];
    var oItem = aList.getElementsByClassName("item")[0];
    var oText = document.getElementById("text");
    var oSpan = document.getElementsByTagName("span")[0];
    var oAnchor = document.getElementsByTagName("a")[0];
    var oImage = document.getElementsByTagName("img")[0];

 DOM元素的属性  Attribute

 获取元素的属性  getAttribute("属性名") 返回属性值(行内的属性) 查

    console.log(oBox.getAttribute("id"));
    console.log(oBox.getAttribute("class"));
    console.log(oBox.getAttribute("style"));  //只能获取行内样式
    console.log(oImage.getAttribute("alt"));

 设置属性  setAttribute("属性名","属性值") 改

    document.getElementById("tab").onclick=function(){
        // oBox.setAttribute("class","box2");
        oImage.setAttribute("src","./car.jpg")
    }

 移除属性  removeAttribute("属性名")  删

    document.getElementById("remove").onclick=function(){
        oBox.removeAttribute("style");
    }

 创建属性  createAttribute("属性名")  自定义 增

    var attr=document.createAttribute("abc");
    attr.value="自定义的属性";
    document.getElementById("add").onclick=function(){
        oBox.setAttributeNode(attr)
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值