JavaScript-DOM编程(节点获取,节点属性修改,节点创建与插入,CSS样式的修改)【新手小白入!!!】

DOM是document object model(文档对象模型的缩写)。DOM提供了一种结构化的方式来访问和更新网页内容,可以动态地添加、删除或修改网页中的元素和属性。使用JavaScript进行DOM编程,可以实现各种交互效果,比如响应用户的点击事件、更新内容、动画效果等。

一、Dom节点获取

在DOM编程中,获取节点可以通过多种方法实现,如 getElementsByTagName、getElementById、getElementsByClassName、querySelector、querySelectorAll等。

  • getElementsByTagName 通过标签名来获取节点 (若有多个相同标签,返回含有多个节点的类数组对象)。例如:先创建3个<p>标签,通过getElementsByTagName获取节点。
html 复制代码
    <p>我是段落1</p>
    <p>我是段落2</p>
    <p>我是段落3</p>
<script>
        const p1 = document.getElementsByTagName("p");  
        console.log(p1);        // p1有多个相同标签,故返回含有多个节点的类数组对象
        console.log(p1[0]);     // 通过下标获取相对应的节点
        console.log(p1[1]);
</script>

结果显示:


  • getElementsByClassName通过class名来获取节点(若有多个相同class,返回含有多个节点的类数组对象)。例如:先创建3个<p>标签,再添加class属性去获取节点。
html 复制代码
    <p class="pp">我是段落1</p>
    <p class="pp">我是段落2</p>
    <p class="pp" id="p3">我是段落3</p>
<script>
    // getElementsByClassName 通过class名来获取节点(若有多个相同class,返回含有多个节点的类数组对象)
        const p2 = document.getElementsByClassName("pp");
        console.log(p2);
        console.log(p2[0]);
        console.log(p2[1]);
        console.log(p2[2]);
</script>

结果显示:


  • getElementById通过id名来获取节点(直接返回可操控的节点)。需设置id属性。
html 复制代码
    <p>我是段落1</p>
    <p>我是段落2</p>
    <p id="p3">我是段落3</p>
<script>
        // getElementById 通过id名来获取节点(直接返回可操控的节点)
        const p3 = document.getElementById("p3");
        console.log(p3);
</script>

结果显示:


  • querySelectorAll 通过CSS选择器获取节点,返回NodeList对象(包含所有匹配给定选择器的节点)。
html 复制代码
    <p class="pp">我是段落1</p>
    <p class="pp">我是段落2</p>
    <p class="pp">我是段落3</p>
<script>
    // querySelectorAll 通过CSS选择器获取节点,返回NodeList对象(包含所有匹配给定选择器的节点)
        const p4 = document.querySelectorAll(".pp");    // .pp:class 属性
        console.log(p4);
        console.log(p4[0]);
        console.log(p4[1]);
        console.log(p4[2]);
</script>

结果显示:


  • querySelector通过CSS选择器获取节点,返回第一个匹配上的节点。
html 复制代码
    <p class="pp">我是段落1</p>
    <p class="pp">我是段落2</p>
    <p class="pp" id="p3">我是段落3</p>
<script>
        // querySelector 通过CSS选择器获取节点,返回第一个匹配上的节点
        // 只返回第一个节点
        const p5 = document.querySelector(".pp");
        console.log(p5);
</script>

结果显示:

二、Dom节点的属性修改

1、查看属性和修改属性

html 复制代码
<p class="pp" id="p3">我是段落3</p>
<script>
        // 1.根据id获取节点 
        const p = document.getElementById("p3");
        console.log(p);
        // 2.查看标签节点的属性
        console.log(p.id);
        console.log(p.className);
        // 3.修改节点的id属性
        p.id = "_p_3";
        console.log(p.id);
        // 4.修改节点的class属性
        p.className = "pp jj yy xx";
        console.log(p.className);
</script>

结果显示:


2、classList对象的操作

classList属性用于返回一个元素的className集合。

1)根据id获取节点
html 复制代码
<p class="pp jj yy xx" id="p4">我是段落4</p>
<script>
        // 根据id获取节点
        const p4 = document.getElementById("p4");
        console.log(p4.classList);
        console.log(p4.classList[0]);
</script>

结果显示:

2)为classList添加一个新的class名
html 复制代码
    <p class="pp jj yy xx" id="p4">我是段落4</p>
    <script>
        // 为classList添加一个新的class名
        p4.classList.add("zz");
        console.log(p4.classList);
    </script>

结果显示:

3)为classList移除一个class名
html 复制代码
    <p class="pp jj yy xx" id="p4">我是段落4</p>
    <script>
        // 为classList移除一个class名
        p4.classList.remove("xx");
        console.log(p4.classList);
    </script>

结果显示:

4)检查classList中是否存在某个class名,返回布尔值
html 复制代码
    <p class="pp jj yy xx" id="p4">我是段落4</p>
    <script>
        // 检查classList中是否存在某个class名,返回布尔值。
        console.log(p4.classList.contains("jj"));
        console.log(p4.classList.contains("zz"));
    </script>

结果显示:

三、Dom节点创建与插入

1、创建节点

  • **createElement:**创建标签节点

代码显示:

html 复制代码
    <p class="pp jj yy xx" id="p4">我是段落4</p>
<script>
        var p4 = document.createElement("p");
        console.log(p4);
</script>
  • **createTextNode:**创建文本节点

代码显示:

html 复制代码
    <script>
        var t4 = document.createTextNode("我是文本节点");
        console.log(t4);
</script>
  • **createAttribute:**创建一个属性节点并为其赋值

代码显示:

html 复制代码
<script>
    //创建一个属性节点并为其赋值
        var a4 = document.createAttribute("class"); // 创建属性节点
        a4.value = "fruit";  // 为属性节点赋值
        console.log(a4);    
</script>

2、插入节点

在DOM(文档对象模型)中插入节点可以通过JavaScript来实现。appendChild 和 setAttributeNode 是两个不同的 DOM 操作方法,分别用于不同的目的。

  • appendChild方法用于将一个节点添加到指定父节点的子节点列表的末尾。
html 复制代码
 <p class="pp" id="p3">我是段落3</p> 
    <script>
        // 创建一个<p>标签节点
        var p4 = document.createElement("p");
        // 创建一个文本节点
        var t4 = document.createTextNode("我是文本节点");
        // 将文本节点作为子节点,加入新建的<p>标签节点下面
        p4.appendChild(t4);    
        console.log(p4);
    </script>

结果显示:

  • setAttributeNode方法则是用于设置一个元素的属性。
html 复制代码
    <p>我是段落3</p>
    <script>
        //创建一个<p>标签节点
        var p4 = document.createElement("p");
        var a4 = document.createAttribute("class"); // 创建属性节点
        a4.value = "fruit";  // 为属性节点赋值

        // 将属性节点插入新建的<p>标签节点
        p4.setAttributeNode(a4);
        console.log(p4);
    </script>

结果显示:

四、CSS样式的修改

通过 JavaScript 修改 CSS 样式可以非常灵活地控制网页的外观。可以直接访问元素的 style 属性来更改样式,或者通过 修改该节点的CSS 代码来改变样式。

先创建一个div盒子,为其设置class和id属性,并为盒子设置样式。原代码显示:

html 复制代码
<style>
        .box{
            width: 50%;
            height: 200px;
            color:blue;
            background-color: aliceblue;
            
        }
    </style>
<body>
    <div class="box"  id="div1">利用js修改CSS样式</div>
</body>

结果显示:


方式1:直接访问元素的 style 属性来更改样式

html 复制代码
<style>
        .box{
            width: 50%;
            height: 200px;
            color:blue;
            background-color: aliceblue;
            
        }
    </style>
<div class="box"  id="div1">利用js修改CSS样式</div>
    <script>
        var e = document.getElementById("div1");

        // 方式1:  我自己更常用,觉得更清晰
        e.style.backgroundColor = "red";
        e.style.color = "white";
        e.style.fontSize = "30px";
</script>

结果显示:


方式2:直接修改该节点的CSS代码

html 复制代码
<style>
        .box{
            width: 50%;
            height: 200px;
            color:blue;
            background-color: aliceblue;
            
        }
    </style>
<body>
    <div class="box"  id="div1">利用js修改CSS样式</div>
    <script>
        var e = document.getElementById("div1");
        // 方式2:  直接修改该节点的CSS代码
        // 利用反引号来解决过长字符串的换行问题,以提高阅读性
        // 如何在键盘中输入反引号:英文输入法下,按左上角那个键
        e.style.cssText = 
        `
            background-color: gray; 
            color:green;
            font-size: 50px;
        `;

    </script>
</body>

结果显示:

相关推荐
2601_949809594 分钟前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
Up九五小庞15 分钟前
开源埋点分析平台 ClkLog 本地部署 + Web JS 埋点测试实战--九五小庞
前端·javascript·开源
猷咪25 分钟前
C++基础
开发语言·c++
IT·小灰灰27 分钟前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
快点好好学习吧28 分钟前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
秦老师Q29 分钟前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
烟锁池塘柳029 分钟前
解决Google Scholar “We‘re sorry... but your computer or network may be sending automated queries.”的问题
开发语言
是誰萆微了承諾29 分钟前
php 对接deepseek
android·开发语言·php
2601_9498683633 分钟前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
摘星编程38 分钟前
React Native + OpenHarmony:UniversalLink通用链接
javascript·react native·react.js