JavaScript-DOM

目录

 

1.0 概述

2.0获取DOM元素

1.0 通过id获取指定元素

2.0通过class名称获取

3.0通过name名称获取

4.0 通过标签名称获取

5.0 通过选择器获取

6.0 通过选择器获取全部

7.0 创建节点

8.0 添加节点

9.0 节点插入

10.0 删除节点

11.0 克隆节点

3.0元素属性操作

4.0 元素内容的操作

5.0 DOM事件

6.0 定时器


1.0 概述

1.0 什么是Window?

window:是一个全局对象,代表浏览器中打开的窗口,每个窗口都是一个Window对象

2.0 什么是document?

document:是Window的一个属性,这个属性是一个对象.它代表当前窗口中的整个网页,

通过document对象我们可以操作整个网页上的所有内容

3.0 什么是DOM?

DOM:定义了访问和操作 HTML文档(网页)的标准方法,全称为:Document Object Model 文档模型对象

注:在JavaScript中的HTML标签也叫做DOM元素,使用document的时候前面不用加window

2.0获取DOM元素

1.0 通过id获取指定元素

document.getElementById("id名称")

注:由于id不可以重复,所以找到了就会将找到的标签包装成一个对象返回给我们,找不到就返回Null

DOM操作返回的是一个对象,这个对象是宿主类型对象(由浏览器提供对象)

2.0通过class名称获取

document.getElementsByClassName("类名");

 

3.0通过name名称获取

document.getElementsByName("name名称");

4.0 通过标签名称获取

document.getElementsByTagName("div");

5.0 通过选择器获取

注: querySelector只会返回根据指定选择器找到的第一个元素

document.querySelector("选择器名称");

6.0 通过选择器获取全部

document.querySelectorAll("选择器名称");

1.0获取指定元素所有子元素

语法: 元素名.children   获取到的是指定元素中所有的子元素

          元素名.childNodes  获取到指定元素中所有的节点

节点:DOM对象(document),这个对象以树的形式保存了界面上的所有内容,HTMl页面每一部分都是由节点(标签(元素),文本,属性)

常量描述
Node.ELEMENT_NODE1一个 元素 节点,例如 <p><div>
Node.TEXT_NODE3Element 或者 Attr 中实际的  文字
Node.CDATA_SECTION_NODE4一个 CDATASection,例如 <!CDATA[[ … ]]>
Node.PROCESSING_INSTRUCTION_NODE7一个用于XML文档的 ProcessingInstruction ,例如 <?xml-stylesheet ... ?> 声明。
Node.COMMENT_NODE8一个 Comment 节点。
Node.DOCUMENT_NODE9一个 Document 节点。
Node.DOCUMENT_TYPE_NODE10描述文档类型的 DocumentType 节点。例如 <!DOCTYPE html>  就是用于 HTML5 的。
Node.DOCUMENT_FRAGMENT_NODE11一个 DocumentFragment 节点
let Div = document.querySelector("div");
    console.log(Div.children);
    console.log(Div.childNodes);

    for(let node of Div.childNodes){
        console.log(node.nodeType); //文本节点输出3 其它节点输出1
    }

2.0 节点

获取指定元素的所有子元素 let  oDiv = document.querySelector("div");

                                             let item = document.querySelector(".item")   

 

获取指定节点中的第一个子节点oDiv.firstChild 
获取指定元素中的第一个子元素oDiv.firstElementChild 
获取指定节点中最后一个子节点oDiv.lastChild 
获取指定元素中的最后一个子元素oDiv.lastElementChild 
通过主元素获取父元素item.parentElement

结果相同

企业开发中的兼容性写法

parentEle = item.parentElement | |  item.parentNode

 

通过主元素获取父节点item.parentNode
获取相邻的上一个节点item.previousSibling 
获取相邻的上一个元素item.previousElementSibling 
获取相邻的下一个节点item.nextSibling 
获取相邻的下一个元素item.nextElementSibling 

7.0 创建节点

创建节点: document.createElement("标签名称");

将标签添加到某一个标签中 : oDiv.appendChild(oSpan);

let oSpan = document.createElement("span"); //创建一个span标签
    let oA = document.createElement("a");  //创建一个a标签
    let oDiv = document.querySelector("div");
    oDiv.appendChild(oSpan); // 将创建的span标签添加到第一个div标签中
    oDiv.appendChild(oA);

8.0 添加节点

Node.appendChild() 方法将一个节点添加到指定父节点的子节点列表末尾。

语法:

var child = node.appendChild(child);
  • node 是要插入子节点的父节点.
  • child 即是参数又是这个方法的返回值.

注意点: appendChild方法会将指定的元素添加到最后

9.0 节点插入

Node.insertBefore() 方法在参考节点之前插入一个拥有指定父节点的子节点。

语法:

var insertedNode = parentNode.insertBefore(newNode, referenceNode);

  • insertedNode 已经经过插入newNode的新的节点
  • parentNode 新插入节点的父节点
  • newNode 用于插入的节点
  • referenceNode newNode将要插在这个节点之前

如果referenceElementnullnewNode将被插入到子节点的末尾

let oSpan = document.createElement("span"); //创建一个span标签
    let oDiv = document.querySelector("div");
    let oform = document.querySelector("form");
    oDiv.insertBefore(oSpan,oform); // 将新创建的span标签添加到form标签的前面

10.0 删除节点

注:在JavaScript中如果想要删除某一个元素,只能通过对应的父元素来删除,不能自己删除自己.

 let oDiv = document.querySelector("div");
    oDiv.parentNode.removeChild(oDiv); //获取div标签的父节点,将div标签删除掉

11.0 克隆节点

Node.cloneNode() 方法返回调用该方法的节点的一个副本.

语法:
var dupNode = node.cloneNode(deep);

node

将要被克隆的节点

dupNode

克隆生成的副本节点

deep 可选

是否采用深度克隆,如果为true,则该节点的所有后代节点也都会被克隆,如果为false,则只克隆该节点本身.

注: cloneNode方法默认不会克隆标签中的子元素,如果想克隆主元素需要传递一个true

et oDiv = document.querySelector("div");
    //let newDiv = oDiv.cloneNode(); // 克隆后的div不包含原div中的元素
    let newDiv = oDiv.cloneNode(true); // 克隆后的div包含原div中的元素

    console.log(newDiv);

3.0元素属性操作

无论是通过document创建还是查询出来的标签,系统都会将元素包装成一个对象返回给我们,系统在包装这个对象的时候会自动将元素的属性都包装到这个对象中,所以只要拿到这个对象就可以拿到标签属性,操作标签属性.

获取元素属性

语法:

元素对象名称.属性名称  该方法无法显示自定义属性

元素对象名称.getAttribute("属性名称")   该方法可以显示自定义属性

<img src="../images/timg.jpg" alt="无法显示图片" title="图片名称" kk="显示自定义属性">
<script>
    let oImg = document.querySelector("img");
    console.log(oImg.src, oImg.alt, oImg.title);
    // http://localhost:63342/%E7%BD%91%E9%A1%B5%E5%BC%80%E5%8F%91%E7%BB%83%E4%B9%A0/images/timg.jpg 无法显示图片 图片名称
    console.log(oImg.kk);  //undefined 无法显示自定义属性
    console.log(oImg.getAttribute("alt"));  //无法显示图片
    console.log(oImg.getAttribute("kk"));  //显示自定义属性

修改元素属性

语法:

元素对象名称.属性名称 = "新的值";

元素对象名称.setAttribute("属性名称","新的值") ;

 let oImg = document.querySelector("img");
    oImg.setAttribute("title","修改title名称");

新增元素属性

语法:

元素对象名称.setAttribute("属性名称","值") ;

注:setAttribute方法如果属性不存在则新增加,如果属性存在则修改

删除元素属性

语法:

元素对象名称.属性名称 = "";  赋值空字符串    注:无法清空自定义属性

元素对象名称.removeAttribute("属性名称","新的值") ;    注:可以清空自定义属性

<img src="../images/timg.jpg" alt="无法显示图片" title="图片名称" kk="显示自定义属性">
<script>
    let oImg = document.querySelector("img");
    oImg.alt = "";
    oImg.removeAttribute("title");

4.0 元素内容的操作

1.0 获取元素内容

let oDiv = document.querySelector("div");

获取元素内容
oDiv.innerHTML获取的内容包含标签,获取的内容不会去掉两端的空格
oDiv.innerText获取的内容不包含标签,获取的内容会去掉两端的空格
oDiv.textContent获取的内容不包含标签,获取的内容不会去掉两端的空格

2.0 设置元素内容

设置元素内容
oDiv.innerHTML = "想要设置的内容"新内容都会覆盖原有的内容,通过innerHTML设置数据,数据中包含标签时,会转换成标签之后再添加 
oDiv.innerText = "想要设置的内容"新内容都会覆盖原有的内容,通过innerText设置数据,数据中包含标签时,不会转换为标签,会当做一个字符串直接设置

在浏览器中存在兼容性问题

 function setTEXT(obj,text) {
        if("textContent" in obj){
            obj.textContent = text;
        }else {
            obj.innerText = text;
        }
    }

    setTEXT(oDiv,"www.baidu.com");

 

oDiv.textContent = "想要设置的内容"新内容都会覆盖原有的内容,通过textContent设置数据,数据中包含标签时,不会转换为标签,会当做一个字符串直接设置

3.0 设置元素样式

let oDiv = document.querySelector("div");

第一种方法

oDiv.className = "bodx";  给标签设置class名称,引用CSS样式

第二种方法

oDiv.style.width = "300px";
oDiv.style.height = "300px";
oDiv.style.backgroundColor = "green";

注:过去CSS中通过 - 连接的样式,在JS中都是驼峰命名法.在通过JS添加的样式是内联样式,会覆盖掉同名的CSS样式

4.0 获取元素样式

let oDiv = document.querySelector("div");

方法一:

oDiv.style.width = "300px";
console.log(oDiv.style.width);

注:通过style属性只能获取到行内样式的属性值,不能获取到CSS设置的属性值

方法二:

let style = window.getComputedStyle(oDiv);
 console.log(style.width);

注:要想获取到CSS设置的属性值,必须通过getComputedStyle方法来获取,getComputedStyle接收一个参数,这个参数就是要获取的元素对象,该方法返回一个对象,这个对象保存了CSS设置的样式和属性.

5.0 DOM事件

1.0 事件:用户和浏览器之间的交互行为,我们称之为事件,如:点击,移入,移出.

2.0 如何绑定事件

在JavaScript中所有的HTML标签都可以添加事件

元素.事件名称 = function(){};

当对应事件被触发时候就会自动执行function中的代码

注:如果给元素添加了和系统同名的事件,我们添加的事件不会覆盖系统添加的事件,若要覆盖,在函数末尾添加 return false;

<body>
<a href="https://www.baidu.com/">打开百度首页</a>

<script>
    let oA = document.querySelector("a");
    oA.onclick = function () {
        alert("打开百度");
        return false;  //用我们添加的属性覆盖掉系统同名的事件
    }
</script>

6.0 定时器

1.0 重复执行的计时器  setInterval()   clearInterval();

<button id="start">开始</button>
<button id="end">结束</button>

<script>
    let startButton = document.querySelector("#start");
    let endButton = document.querySelector("#end");
    let id = null;

    startButton.onclick = function () {
        id = setInterval(function () {
            console.log("定义");
        },1000)
    }

    endButton.onclick = function () {
        clearInterval(id);
    }
</script>

2.0 只执行一次的定时器  setTimeout()   clearTimeout();

<button id="start">开始</button>
<button id="end">结束</button>

<script>
    let startButton = document.querySelector("#start");
    let endButton = document.querySelector("#end");
    let id = null;

    startButton.onclick = function () {
        id = setTimeout(function () {
            console.log("定义");
        },5000)
    };

    endButton.onclick = function () {
        clearTimeout(id);
    };

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值