从零开始学 Web 之 DOM(一)DOM的概念,对标签操作

简介: 大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。

大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

img_25336e0b5504f9a5b326090f41d9dcd7.png

一、DOM概念

DOM 的全称为:Document Object Model 文档对象模型

我们把 html 文件看成一个文档,因为万物皆对象,所以这个文档也是一个对象。这个文档中所有的标签都可以看成一个对象,比如 div 标签,p 标签等。

1、相关概念

  • html 页面有一个根标签 html 标签。
  • 标签也叫元素,也叫对象。
  • 页面中的顶级对象:document。

节点(node):页面中所有的内容都是节点。包括标签,属性,文本等

xml 文件也可以看成一个文档。
html:侧重于展示数据。
xml:侧重于存储数据。

2、DOM树

文档下面有根标签 html,html 下有 head 和 body 标签,head 下又有 title 等,body 下又有 div 等。

由文档及文档中的所有元素(标签)组成的树状结构,叫树状图(DOM树)

二、DOM的作用

DOM的作用主要是:操作页面的元素(标签)。

DOM经常进行的操作

  • 获取元素
  • 动态创建元素
  • 对元素进行操作(设置属性或调用其方法)
  • 事件(什么时机做相应的操作)

三、DOM初体验

基本上分三步走:

  • 根据 id 等获取元素
  • 为获取的元素注册事件
  • 添加事件处理函数

注意:所有function后面都有分号。

1、对标签的操作

1.1、点击按钮,弹出对话框

<body>
    <input type="button" value="按钮" id="btn">
    <script>
        document.getElementById("btn").onclick = function () {
            alert("hahahaha");
        };
    </script>
</body>

1.2、点击按钮显示图片,并设置图片宽高

<body>
    <input type="button" value="按钮" id="btn">
    <img src="" id="im">
    <script>
        document.getElementById("btn").onclick = function() {
            document.getElementById("im").src = "1.png";
            document.getElementById("im").width = 600;
            document.getElementById("im").height = 200;
        };
    </script>
</body>

document.getElementById("xxx"); 返回值是一个标签对象,利用这个对象可以操作其中的元素,像 type,value 等都是它的元素。

注意:html 标签里面的 width 和 height 属性是不需要加 px 的,css 的 style 里面的宽高才要加。

1.3、点击按钮修改 p 标签的内容

<body>
    <input type="button" value="按钮" id="btn">
    <p id="p1">p标签</p>
    <script>
        document.getElementById("btn").onclick = function() {
            document.getElementById("p1").innerText = "我是一个P标签";
        };
    </script>
</body>

凡是成对的标签,设置中间的中间的文本内容,都是用innerText属性。

1.4、点击按钮设置所有的 p 标签内容

<body>
    <input type="button" value="按钮" id="btn"/>
    <div>
        <p>hello</p>
        <p>hello</p>
        <p>hello</p>
    </div>
    <div>
        <p>Daotin</p>
        <p>Daotin</p>
        <p>Daotin</p>
    </div>

    <script>
        document.getElementById("btn").onclick = function () {
            var pObjs = document.getElementsByTagName("p");         
            
            for(var i=0; i<pObjs.length; i++) {
                pObjs[i].innerText = "world";
            }
        }
    </script>

</body>

如果只想设置第一个 div 里面的 p标签怎么办呢?

<body>
    <input type="button" value="按钮" id="btn"/>
    <div id="box">
        <p>hello</p>
        <p>hello</p>
        <p>hello</p>
    </div>
    <div>
        <p>Daotin</p>
        <p>Daotin</p>
        <p>Daotin</p>
    </div>

    <script>
        document.getElementById("btn").onclick = function () {
            var pObjs = document.getElementById("box").getElementsByTagName("p");           
            
            for(var i=0; i<pObjs.length; i++) {
                pObjs[i].innerText = "world";
            }
        }
    </script>
</body>

1.5、点击按钮修改图片的 alt 和 title 属性

<body>
<input type="button" value="按钮" id="btn">
<img src="1.png" alt="Google" title="logo">

<script>
    document.getElementById("btn").onclick = function () {
        var imgObjs = document.getElementsByTagName("img");
        imgObjs[0].alt = "Daotin"; 
        imgObjs[0].title = "nihao";
    };
</script>
</body>

imgObjs[0]:代表的就是伪数组的第一个对象。

1.6、点击按钮修改多个文本框的值

<body>
<input type="button" value="点击按钮填充文本" id="btn"><br>
<input type="text" value=""><br>
<input type="text" value=""><br>
<input type="text" value=""><br>
<input type="text" value=""><br>
<input type="text" value=""><br>

<script>
    document.getElementById("btn").onclick = function (ev) {
        var inputs = document.getElementsByTagName("input");
        for (var i = 0; i < inputs.length; i++) {
            // 判断 type 是否为text
            if(inputs[i].type === "text") {
                // 这时候不能使用 innerText ,因为这不是成对的标签
                inputs[i].value = "Daotin,你好啊";
            }
        }
    };
</script>
</body>

1.7、点击按钮修改 value 属性

<body>
<input type="button" value="点击按钮填充文本" id="btn"><br>

<script>
    var btnObj =  document.getElementById("btn");
    btnObj.onclick = function (ev) {
        // btnObj.value = "Daotin";
        // btnObj.type = "text";
        // btnObj.id = "btn2";
        this.value = "Daotin";
        this.type = "text";
        this.id = "btn2";
    };
</script>
</body>

在一个对象的事件里面对当前事件的属性的操作,可以使用this.属性来修改。

1.8、按钮的排他功能

<body>
<input type="button" value="lvonve">
<input type="button" value="lvonve">
<input type="button" value="lvonve">
<input type="button" value="lvonve">
<input type="button" value="lvonve">

<script>
    // 获取全部按钮
    var btnObjs = document.getElementsByTagName("input");

    // 循环为所有按钮注册点击事件
    for(var i=0; i<btnObjs.length; i++) {
        btnObjs[i].onclick = function (ev) {
            // 先设置点击每个按钮的时候将所有的按钮value为lvonve
            for(var j=0; j<btnObjs.length; j++) {
                btnObjs[j].value = "lvonve";
            }
            //再设置当前点击的按钮为Daotin
            this.value = "Daotin";
        };
    }
</script>
</body>

并不是我们通常想的,点击某一个按钮的时候,将之前点击的按钮恢复,而是点击每一个按钮之前,将所有的按钮恢复。

1.9、点击图片修改路径

<body>
<input type="button" value="lvonve" id="btn">
<img src="1.png" id="im">

<script>
    function myid(id) {
        return document.getElementById(id);
    }
    myid("btn").onclick = function (ev) {
        myid("im").src = "2.jpg";
    };
</script>
</body>

如果有多个地方都使用了document.getElementById("") 的话,可以封装成一个函数来调用。

1.10、点击按钮选择性别和兴趣

<body>
<input type="button" value="修改性别" id="btn1">
<input type="radio" value="1" name="sex"><input type="radio" value="2" name="sex" id="nv"><input type="radio" value="3" name="sex">保密
<br>
<input type="button" value="选择兴趣" id="btn2">
<input type="checkbox" value="1" name="hobby" id="chi">吃饭
<input type="checkbox" value="2" name="hobby">睡觉
<input type="checkbox" value="3" name="hobby" id="play">打豆豆

<script>
    function my$(id) {
        return document.getElementById(id)
    }

    my$("btn1").onclick = function () {
        my$("nv").checked = true; // 填“checked”等同于true
    };

    my$("btn2").onclick = function () {
        my$("chi").checked = true;// 填“checked”等同于true
        my$("play").checked = true;// 填“checked”等同于true
    };
</script>
</body>

1、在单标签中,如果属性对应的值只有一个,而且值和属性同名,那么 js 操作 DOM 的时候,这个属性值可以用布尔类型表示。比如:checked="checked" selected="selected" disabled="disabled" readonle="readonly" 等。

2、在上面例子,不管是写 "checked"还是其他任何的字符串,都会选中的,因为非空字符串都会被浏览器转换成 true。

3、在 html 中,如果属性的值只有一个,可以直接写这个属性,而不需要赋值,也是有效的。比如:<input type="text" value="文本" readonly /> 这个时候,这个文本框也是被禁用的。

img_25336e0b5504f9a5b326090f41d9dcd7.png

img_44cd409fb9a85d884c4a306cf455f565.png

目录
相关文章
|
5月前
|
分布式计算 并行计算 安全
在Python Web开发中,Python的全局解释器锁(Global Interpreter Lock,简称GIL)是一个核心概念,它直接影响了Python程序在多线程环境下的执行效率和性能表现
【6月更文挑战第30天】Python的GIL是CPython中的全局锁,限制了多线程并行执行,尤其是在多核CPU上。GIL确保同一时间仅有一个线程执行Python字节码,导致CPU密集型任务时多线程无法充分利用多核,反而可能因上下文切换降低性能。然而,I/O密集型任务仍能受益于线程交替执行。为利用多核,开发者常选择多进程、异步IO或使用不受GIL限制的Python实现。在Web开发中,理解GIL对于优化并发性能至关重要。
60 0
|
5月前
|
文字识别 前端开发 API
视觉智能开放平台产品使用合集之需要在Web端处理本地文件并上传,该如何操作
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
2月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`&lt;select&gt;` 和 `&lt;option&gt;`)、文本域(`&lt;textarea&gt;`)、标签解释(`&lt;label&gt;`)、各类按钮(`&lt;button&gt;`)及表单重置功能、无语义布局标签(`&lt;div&gt;` 和 `&lt;span&gt;`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
2月前
|
XML 缓存 JavaScript
提升对前端的认知,不得不了解Web API的DOM和BOM
该文章强调了在前端开发中理解和掌握DOM(文档对象模型)和BOM(浏览器对象模型)的重要性,并介绍了它们的相关操作和应用。
提升对前端的认知,不得不了解Web API的DOM和BOM
|
2月前
|
JavaScript 前端开发
react字符串转为dom标签,类似于Vue中的v-html
本文介绍了在React中将字符串转换为DOM标签的方法,类似于Vue中的`v-html`指令,通过使用`dangerouslySetInnerHTML`属性实现。
71 0
react字符串转为dom标签,类似于Vue中的v-html
|
2月前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`&lt;img&gt;`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`&lt;a&gt;`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
48 13
|
29天前
|
JavaScript 前端开发
DOM的概念?获取html元素的方法有哪些?
DOM的概念?获取html元素的方法有哪些?
28 0
|
3月前
|
前端开发 JavaScript 数据可视化
Python+Dash快速web应用开发——基础概念篇
Python+Dash快速web应用开发——基础概念篇
|
3月前
|
XML JavaScript 前端开发
哇塞!Web 前端惊现 DOM 元素神操作,一场惊心动魄的网页变革,你准备好了吗?
【8月更文挑战第23天】在Web前端开发中,熟练操作DOM元素至关重要。DOM作为一种编程接口,将HTML/XML文档表示为节点树,便于使用JavaScript访问及修改文档内容与结构。
56 0
|
3月前
|
XML JavaScript 测试技术
Web自动化测试框架(基础篇)--HTML页面元素和DOM对象
本文为Web自动化测试入门指南,介绍了HTML页面元素和DOM对象的基础知识,以及如何使用Python中的Selenium WebDriver进行元素定位、操作和等待机制,旨在帮助初学者理解Web自动化测试中的关键概念和操作技巧。
50 1