DOM编程教学,JavaScript如何与网页元素交互经验教程

DOM编程教学,JavaScript如何与网页元素交互经验教程

JavaScript的核心能力在于操作网页。那么,JS是如何“看到”并“改变”网页内容的呢?答案就是通过DOM(文档对象模型)​。本文将教你如何选择页面上的元素并修改它们。

1. 什么是DOM?

当网页加载时,浏览器会创建页面的文档对象模型(Document Object Model)​

  • 模型:​​ DOM将整个HTML文档表示成一个由节点和对象组成的树形结构。
  • 树结构:​​ 文档是根节点,<html>是其子节点,<head><body><html>的子节点,以此类推。

JavaScript可以通过这套模型提供的接口(API)来:

  • 动态改变页面内容。
  • 改变元素的CSS样式。
  • 对用户事件做出反应。

你可以把HTML文档看作是一栋大楼的蓝图,而DOM就是这栋大楼在内存中的真实结构,JavaScript则是可以对这个结构进行装修和改造的工程师。

2. 选择元素

要与元素交互,首先必须选中它。document对象代表整个页面,它提供了多种选择元素的方法。

通过ID选择:getElementById

通过元素的 id属性来选择。因为ID应该是唯一的,所以这个方法返回单个元素

<h1 id="mainTitle">欢迎光临</h1>
let titleElement = document.getElementById("mainTitle");
console.log(titleElement); // 打印出这个h1元素对象

通过CSS选择器选择:querySelectorquerySelectorAll(现代、强大!)​

  • querySelector(‘selector’)​:返回与指定CSS选择器匹配的第一个元素
  • querySelectorAll(‘selector’)​:返回一个包含所有匹配元素的NodeList​(类似于数组的集合)。
<ul class="fruits-list">
    <li>苹果</li>
    <li class="highlight">香蕉</li>
    <li>橙子</li>
</ul>
// 选择第一个 <li> 元素
let firstLi = document.querySelector("li");
console.log(firstLi.textContent); // 输出:"苹果"

// 选择 class 为 "highlight" 的第一个元素
let highlightedItem = document.querySelector(".highlight");
console.log(highlightedItem.textContent); // 输出:"香蕉"

// 选择 class 为 "fruits-list" 的元素下的所有 <li>
let allListItems = document.querySelectorAll(".fruits-list li");
console.log(allListItems.length); // 输出:3

// 遍历 querySelectorAll 返回的 NodeList
allListItems.forEach(function(item) {
    console.log(item.textContent);
});
// 输出:
// 苹果
// 香蕉
// 橙子

建议:在现代开发中,优先使用 querySelectorquerySelectorAll,因为它们非常灵活。​

3. 修改元素内容

选中元素后,我们可以修改其内部的HTML或文本。

  • textContent:​​ 获取或设置元素的文本内容​(忽略HTML标签)。
  • innerHTML:​​ 获取或设置元素内的HTML代码。使用它可以插入新的HTML元素。
<div id="myDiv">
    <p>这是一段<strong>旧</strong>的文本。</p>
</div>
let myDiv = document.getElementById("myDiv");

// 使用 textContent
console.log(myDiv.textContent); // 输出:这是一段旧的文本。
myDiv.textContent = "这是一段全新的纯文本!"; // 所有HTML标签都会被当作文本显示

// 使用 innerHTML
myDiv.innerHTML = "<p>这是一段<em>全新</em>的HTML内容!</p>"; // 会解析HTML标签

注意:​​ 如果内容来自用户输入,使用 innerHTML可能有安全风险(XSS攻击),此时应优先使用 textContent

4. 修改元素样式

可以通过元素的 style属性来直接修改其CSS样式。CSS属性名需要转换为驼峰命名法

let title = document.getElementById("mainTitle");

title.style.color = "blue"; // 对应 CSS 的 color
title.style.backgroundColor = "yellow"; // 对应 CSS 的 background-color
title.style.fontSize = "24px"; // 对应 CSS 的 font-size

5. 实战练习

创建一个HTML文件,包含以下代码,并观察效果。

<!DOCTYPE html>
<html>
<head>
    <title>DOM 练习</title>
</head>
<body>
    <h1 id="greeting">初始标题</h1>
    <p class="content">第一段内容。</p>
    <p class="content">第二段内容。</p>
    <button id="changeBtn">点击改变页面</button>

    <script>
        // 1. 选择按钮元素
        let button = document.getElementById("changeBtn");

        // 2. 给按钮添加点击事件(下篇文章详解)
        button.onclick = function() {
            // 3. 选择标题并修改内容和样式
            let title = document.getElementById("greeting");
            title.textContent = "你好,DOM!";
            title.style.color = "red";

            // 4. 选择所有段落并修改内容
            let paragraphs = document.querySelectorAll(".content");
            paragraphs.forEach(function(p, index) {
                p.innerHTML = `这是被JavaScript改变的第 <strong>${index + 1}</strong> 段。`;
            });
        };
    </script>
</body>
</html>

用浏览器打开这个文件,点击按钮,看看页面发生了什么变化。

总结

通过DOM,JavaScript获得了与HTML文档交互的能力。到此你学会了如何使用 getElementByIdquerySelector等方法来选择元素,以及如何使用 textContentinnerHTMLstyle属性来修改元素的内容和样式。这是实现动态网页的第一步。

发表评论