前端javascript的DOM对象操作技巧,全场景解析(一)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 前端javascript的DOM对象操作技巧,全场景解析(一)

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

1.js的DOM介绍

JavaScript中,dom是一套操作文档内容的方法,可以完成查、增、删、改(先删后增)的操作。而且dom的开发效率很高,还可以用于服务器渲染、weex 开发等。本文向大家介绍JavaScript中的dom。

1、什么是dom?

dom,全称Document Object Model文档对象模型,是 W3C 的标准; [所有浏览器公共遵守的标准] 。

用于处理网页内容的方法和接口,简单的说就是一套操作文档内容的方法。

2、dom组成:

由HTML、CSS、事件(交互)组成。HTML、CSS完成查、增、删、改(先删后增)的操作。

3、dom缓存:

把查询到的东西存放到一个变量中,该变量占用的是浏览器的内存。

浏览器中所有被访问过的页面都会被存放到BOM的history中。

一句话总结:

dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来更加方便的进行dom操作

1、dom是什么?

对于JavaScript,为了能够使JavaScript操作Html,JavaScript就有了一套自己的dom编程接口。

对于Html,dom使得html形成一棵dom树,类似于一颗家族树一样,一层接一层,子子孙孙。

2、Html的DOM树是什么?

HTML中的每个标签元素,属性,文本都能看做是一个DOM的节点,这些dom节点构成了一个树形结构

3、原生的dom操作指的是什么?

就是用原生的js进行的操作,相对的就是非原生操作,比如用jquery操作dom

DOM树

文档 对应js中的document对象

查找html元素

案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DOM document object model 文档顶级节点</title>
</head>
<body>
    <div id="box">
        <p class="p1" >张三</p>
        <p class="p2">李四</p>
        <p class="p3">赵刘</p>
        <p name="ceshi1"></p>
        <p name="ceshi1"></p>
    </div>

    <div>
        <input type="text" name="username" />
        <input type="password" name="pwd" />
        
        <p1>112233</p1>
        <box>55666</box>
    </div>

    <script>
        console.log(document)

查看当前html界面有哪些元素,就是当前文档的节点,document获取到整个文档

// ### 1 通过id获取div节点对象

var box = document.getElementById(“box”);

console.log(box);

// ### 2 通过类名获取节点对象 [返回的是数组]

var p2 = document.getElementsByClassName(“p2”);

console.log(p2 , typeof(p2));

打印类名为p2的节点对象

    // 获取李四节点对象
    lisi = p2[0];
    console.log(lisi)

// 获取王五节点对象
    wangwu = p2[1];
    console.log(wangwu);

// ### 3.通过标签获取节点对象 [返回的是数组]

var p = document.getElementsByTagName(“p”);

console.log§

console.log(p[1])

// ### 4.通过标签身上的name属性 [返回的是数组] 一般用在input表单中

var ceshi1 = document.getElementsByName(“username”)[0];

console.log(ceshi1);

通过name获取的是数组

通过数组下标取值,才能获取元素

// ### 通过css选择器获取对应的元素节点

// ### 5.querySelector ,只获取找到的第一个;

里面可以跟css的各种选择器,可以是id,类,标签等等

以css选择器的形式查找相关元素 ,通过p1类来查找,只能查找第一个

var p1 = document.querySelector(“.p1”);

console.log(p1)

通过id为box来查找
   var box = document.querySelector("#box");
    console.log(box)

// 通过标签来查找,input表单有两个,但是只获取第一个;

var input = document.querySelector(“input”);

console.log(input);

// ### 6.querySelectorAll 获取所有找到的元素节点,返回数组

通过 CSS 选择器查找 HTML 元素

如果您需要查找匹配指定 CSS 选择器(id、类名、类型、属性、属性值等等)的所有 HTML 元素,请使用 querySelectorAll() 方法。

var all = document.querySelectorAll(“input[name=username]”)[0];

console.log(all);

获取所有input输入框,返回数组

获取其中一个

具体查找到一个

综上,使用querySelectorAll() 比较好,能查找的范围广,通过css选择器都可以查找,这样方便我们控制节点

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


2.节点元素层级关系

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>节点元素层级关系</title>
</head>
<body>
    <div id="box">
        <p>
            <input type="text" name="username" />
            <input type="password" name="pwd" />
        </p>
        <p class="p1" >张三</p>
        <p class="p2">李四</p>
        <p class="p3">赵刘</p>
        <p name="ceshi1"></p>
        <p name="ceshi1"></p>
    </div>
    <script>

      
  // ### 获取对应的节点元素
        console.log(document)
        console.log(document.documentElement); // html
        console.log(document.documentElement.children) 
      children获取html下面的子元素,head和body


// 找html里面所有的子节点children
    var html_children = document.documentElement.children
    console.log(html_children) // head , body

根据下标取body
    body = html_children[1];
    console.log(body); // head , body
 

根据body,取其子元素
    var div = body.children[0]
    console.log(div);

div的第一个子元素是p标签,里面两个input子标签
   var p0 = div.children[0]
    console.log(p0)

var input = p0.children
    console.log(input)

var input1 = input[0]
    console.log(input1)

// 获取下一个节点对象nextSibling ,兄弟节点,第一个nextSibling 是两个input之间的换行,第二个nextSibling是第二个input

nextSibling 下一个不区分元素还是文本,下一个是什么就查到什么

第二个nextSibling是第二个input

console.log(input1.nextSibling.nextSibling);

// 获取下一个元素节点对象 nextElementSibling。这个查找的不包含空格文本等,查找的是元素节点

var input2 = input1.nextElementSibling;

console.log(input2);

    // 获取上一个节点对象 previousSibling。查找上一个节点对象,不管是元素节点还是文本,空格等
    console.log(input2.previousSibling)

// 获取上一个元素节点对象 previousElementSibling。只查找元素节点

console.log(input2.previousElementSibling)

// 获取input2父节点元素对象;
    console.log(input2.parentElement)

父元素是p标签

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

3.通过js修改,清空节点内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DOM 修改/清空内容</title>
</head>
<body>
    <button onclick="func1()">修改内容</button>
    <button onclick="func2()">清空内容</button>
    <div id="box" style="border:solid 1px red;">
        <p>我是最帅的最有钱的<a href="#">最有味的</a>男人</p>
    </div>
    <script>
        // innerHTML 获取标签里面所有内容 [标签 + 文本]
        // innerText 获取标签里面所有字符串[文本]
        var p = document.querySelector("#box p");
        // console.log把数据展现在控制台
        console.log(p);

// document.write 把数据以字符串的形式展现在浏览器

document.write§;

这是把p对象写入到html,写入的是字符串

    // 点击button1触发如下任务 , 修改
    function func1(){
        var content = p.innerHTML;
        var content = p.innerText;
        console.log(content);
        // p.innerHTML = `我被修改了 <a href=''>点我中大奖</a>...1`;
        p.innerText = `我被修改了 <a href=''>点我中大奖</a>...2`;
    }

    // 点击button2触发如下任务 , 清空
    function func2(){
        p.innerHTML = '';
    }


innerHTML获取标签里的所有内容,包含标签和文本,如下,p标签里面包含a标签,点击修改内容,写入到浏览器和控制台的内容包含文本和标签

innerText获取标签里面的所有文本字符串,不包含标签,如下,点击修改内容,打印到浏览器和控制台的只有字符串

修改内容用innerHTML,里面写标签,可以被识别

如果用innerText,里面写标签,会被当做文本写入浏览器

清空内容,将标签里面的内容设为空即可,点击清空按钮即可清空

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


前端javascript的DOM对象操作技巧,全场景解析(二):https://developer.aliyun.com/article/1497188

相关文章
|
27天前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
13天前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
23天前
|
存储 前端开发 JavaScript
JavaScript垃圾回收机制深度解析
【10月更文挑战第21】JavaScript垃圾回收机制深度解析
97 59
|
14天前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
15天前
|
前端开发 JavaScript
JavaScript新纪元:ES6+特性深度解析与实战应用
【10月更文挑战第29天】本文深入解析ES6+的核心特性,包括箭头函数、模板字符串、解构赋值、Promise、模块化和类等,结合实战应用,展示如何利用这些新特性编写更加高效和优雅的代码。
32 0
|
1月前
|
JavaScript 前端开发 开发者
原型链深入解析:JavaScript中的核心机制
【10月更文挑战第13天】原型链深入解析:JavaScript中的核心机制
29 0
|
1月前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
95 0
|
1月前
|
JavaScript
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
41 0
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
26天前
|
JavaScript
HTML DOM 节点树
HTML DOM 节点是指在 HTML 文档对象模型中,文档中的所有内容都被视为节点。整个文档是一个文档节点,每个 HTML 元素是元素节点,元素内的文本是文本节点,属性是属性节点,注释是注释节点。DOM 将文档表示为节点树,节点之间有父子和同胞关系。

推荐镜像

更多