JavaScript-3.DOM

news2024/12/26 23:16:30

通过HTML DOM,可以访问JavaScript HTML文档中的所有元素

DOM(Document Object Model)

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。将网页内的元素封装成一个对象,并建立元素的层级关系,形似一棵树,称为DOM树。

通过可编程的对象模型,JavaScript获得了足够的能力来创建动态的HTML

  • 改变HTML元素
  • 改变HTML属性
  • 改变CSS样式
  • 对页面中的所有事件做出反应

访问基本元素DOM对象方式

  • document.documentElement:获取HTML标签的dom对象
  • document.docType:获取HTML文档的文档头字符
  • document.body:获取body的dom对象
  • document.head:获取head标签的dom对象
  • document.title:获取title的文字标题

访问文档内子节点DOM对象的方式

通过id查找HTML元素

根据ID获取DOM第一个对象,如果获取不到返回null

document.getElementById('id')

通过标签名查找HTML元素

根据标签名(忽略大小写)获取全部该标签的对象数组

document.getElementsByTagName('tagName')

通过类名找到HTML元素

根据样式类名属性获取全部该标签的对象数组。(非标准,但被主流浏览器兼容)

document.getElementsByClassName('cn')

通过name属性查找HTML元素

根据name属性获取全部该标签的对象数组

document.getElementsByName('name')

通过选择器查找

document.querySelector('#div')

练习

练习查找方式

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>获取DOM</title>
    <script>
        window.onload=function(){
            document.getElementById('btn1').onclick=function(){
                alert(document.getElementById('div1').innerHTML)
            }
            document.getElementById('btn2').onclick=function(){
                var arr = document.getElementsByClassName('pName')
                for(var i=0; i<arr.length; i++){
                    alert(arr[i].innerHTML)
                }
            }
            document.getElementById('btn3').onclick=function(){
                var arr = document.getElementsByTagName('h5')
                for(var i=0; i<arr.length; i++){
                    alert(arr[i].innerHTML)
                }
            }
            document.getElementById('btn4').onclick=function(){
                var arr = document.getElementsByClassName('aa')
                for(var i=0; i<arr.length; i++){
                    alert(arr[i].innerHTML)
                }
            }
            document.getElementById('btn5').onclick=function(){
                var arr = document.querySelectorAll('.pp')
                for(var i=0; i<arr.length; i++) {
                    alert(arr[i].innerHTML)
                }
            }
        }
    </script>
</head>
<body>
    <div id="div1">div</div>
    <button id="btn1">通过id获取节点对象</button>

    <p name="pName">p1</p>
    <p name="pName">p2</p>
    <button id="btn2">通过name获取节点对象</button>

    <h5>hhh</h5>
    <h5>ddd</h5>
    <button id="btn3">通过标签获取节点对象</button>
    <br>
    <span class="aa">span1</span>
    <span class="aa">span2</span>
    <button id="btn4">通过类样式获取节点对象</button>

    <p id="p1" class="pp">选择器</p>
    <p class="pp">选择器2</p>
    <button id="btn5">通过选择器获取节点对象</button>
</body>
</html>

DOM改变HTML内容

改变HTML输出流

document.write():可以直接向HTML写内容

改变HTML内容

  • innerHTML:设置或获取当前元素内的html
  • innerText:设置或获取当前元素内的文字内容

两者区别

  • innerHTML:可以设置文本内容也可以设置标签,既能获取文本内容也可以获取标签
  • innerText:可以设置文本内容但是不识别标签,会把标签当成文本。可以获取文本内容但是不可以获取标签

练习1

通过将div标签中的内容改为html语言,观察innerHTML与innerText的区别

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>修改内容</title>
    <script>
        window.onload=function(){
            document.getElementById('btn1').onclick = function(){
                document.getElementById('div1').innerHTML = "<h1>通过innerHTML设置/获取内容</h1>";
                alert(document.getElementById('div1').innerHTML)
            }
            document.getElementById('btn2').onclick = function(){
                document.getElementById('div1').innerText = "<h1>通过innerText设置/获取内容</h1>";
                alert(document.getElementById('div1').innerText)
            }
        }
    </script>
</head>
<body>
    <div id="div1">div
        <img src="IMG_4342.JPG" alt="">
    </div>
    <button id="btn1">通过innerHTML设置/获取内容</button>
    <button id="btn2">通过innerText设置/获取内容</button>
</body>
</html>

改变HTML属性

document.getElementById(id).attribute=new value

查看/修改属性节点

  • getAttribute('属性名')
  • setAttribute('属性名', '属性值')

练习2

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content&#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1613820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【简单介绍下Faiss原理和使用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【软考---系统架构设计师】软件架构

目录 1 一、软件架构的概念 二、软件架构风格 &#xff08;1&#xff09;数据流风格​​​​​​​ &#xff08;2&#xff09;调用/返回风格 &#xff08;3&#xff09;独立构件风格 &#xff08;4&#xff09;虚拟机风格 &#xff08;5&#xff09;仓库风格 三、架构…

知识图谱的起源与发展

文章目录 知识图谱的发展历史知识图谱的重要性知识图谱与Ontology、语义网络之间的区别知识图谱的定义 知识图谱的发展历史 知识图谱始于20世纪50年代&#xff0c;至今大致分为三个发展阶段&#xff1a;第一阶段 &#xff08;1955年—1977年&#xff09;是知识图谱的起源阶段&a…

C++学习————第八天(C/C++内存管理)

目录 1、1.C/C内存分布 2、 C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3、C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 4.operator new与operator delete函数 5. new和delete的实现原理 5.1 内置类型 5.2 自定…

C++ 初识模板

目录 0.前言 1.泛型编程 2.函数模板 2.1概念 2.2格式 2.3原理 2.4函数模板的实例化 2.4.1隐式实例化 2.4.2显式实例化 2.5模板参数的匹配原则 3.类模板 3.1类模板的定义格式 3.2类模板的实例化 4.结语 &#xff08;图像由AI生成&#xff09; 0.前言 在 C 中&a…

密码学 | 承诺:常见的承诺方案

&#x1f951;原文&#xff1a;密码学原语如何应用&#xff1f;解析密码学承诺的妙用 - 知乎 1 简介 密码学承诺 涉及 承诺方、验证方 两个参与方&#xff0c;以及以下两个阶段&#xff1a; 承诺阶段&#xff1a;承诺方选择一个敏感数据 v v v&#xff0c;为它计算出相应…

docker打包部署自己的应用

docker部署应用 当谈及使用 Docker 进行容器化部署应用时&#xff0c;可以想象它是一个能够将整个应用程序及其所有依赖项打包成一个独立、可移植的容器的工具。这个容器不仅包含了应用代码&#xff0c;还包括了操作系统、运行时环境以及所有依赖的库和组件。这样一来&#xf…

Python 全栈安全(二)

原文&#xff1a;annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第二部分&#xff1a;认证与授权 本书的第二部分是最具商业价值的部分。我这样说是因为它充满了大多数系统需要具备的实用工作流示例&#xf…

nginxtomcat笔记

nginx是一个轻量级高性能的http和反向代理web服务器&#xff0c;优点&#xff1a;占用内存少&#xff0c;并发能力强 实验主机&#xff1a;192.168.200.141 192.168.200.142 1.虚拟主机 1.1基于域名&#xff1a;一台服务器&#xff0c;一个端口&#xff0c;部署多个网站 在ng…

Transformer - Teacher Forcing

Transformer - Teacher Forcing flyfish 在训练过程中&#xff0c;将目标序列输入给解码器的方法称为&#xff08;Teacher Forcing&#xff09;。这个术语又代表什么意思呢&#xff1f; 这里的目标序列就是Ground Truth&#xff0c;也就是我们已知的正确答案 一句话就是我们…

火灾风险把控:数据采集卡搭配传感器实现电路异常全面监控!

引言 在现代社会中&#xff0c;火灾安全和用电安全是人们生活和工作中不可忽视的重要问题。为了有效应对火灾风险和电路异常情况&#xff0c;阿尔泰科技引入了一项创新解决方案&#xff1a;利用PXIe5681多功能数据采集卡对小信号的高精度测量优势&#xff0c;搭配电压传感器监…

使用代理绕过网站的反爬机制

最近在尝试收集一些网络指标的数据&#xff0c; 所以&#xff0c; 我又开始做爬虫了。 :) 我们在做爬虫的过程中经常会遇到这样的情况&#xff0c;最初爬虫正常运行&#xff0c;正常抓取数据&#xff0c;一切看起来都是那么的美好&#xff0c;然而一杯茶的功夫可能就会出现错误…

文本嵌入新方案:合合信息acge模型荣登C-MTEB榜首

目录 0 写在前面1 文本嵌入&#xff1a;LLM落地的根基2 C-MTEB&#xff1a;acge荣夺榜一2.1 max tokens2.2 文本分类2.3 文本聚类 3 acge demo演示与体验总结 0 写在前面 随着信息技术的发展和应用场景的不断扩大&#xff0c;人们需要处理和利用大量的文档信息。而传统的手动处…

深度学习transformer架构详细详解

一、transformer的贡献 transformer架构的贡献&#xff1a;该架构只使用自注意力机制&#xff0c;没有使用RNN或卷积网络。且可以实现并行计算&#xff0c;加快模型训练速度。 &#xff08;将所有的循环层全部换成&#xff1a;multi-headed self-attention&#xff09; 二、t…

39. UE5 RPG角色释放技能时转向目标方向

在上一篇&#xff0c;我们实现了火球术可以向目标方向发射&#xff0c;并且还可以按住Shift选择方向进行攻击。技能的问题解决&#xff0c;现在人物释放技能时&#xff0c;无法朝向目标方向&#xff0c;接下来我们解决人物的问题。 实现思路&#xff1a; 我们将使用一个官方的…

C++ //练习 12.20 编写程序,逐行读入一个输入文件,将内容存入一个StrBlob中,用一个StrBlobPtr打印出StrBlob中的每个元素。

C Primer&#xff08;第5版&#xff09; 练习 12.20 练习 12.20 编写程序&#xff0c;逐行读入一个输入文件&#xff0c;将内容存入一个StrBlob中&#xff0c;用一个StrBlobPtr打印出StrBlob中的每个元素。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工…

密码学 | Random Oracle 随机预言机

​ &#x1f951;原文&#xff1a;究竟什么才是随机预言机呢&#xff1f; - 玄星的回答 &#x1f951;答主指出&#xff1a; 英文维基明明对 随机预言机 给出了两个完全不同的理解&#xff0c;但这两个理解之间的连接词却是 “Stated differently”&#xff0c;即 “换句话说…

LabVIEW多设备控制与数据采集系统

LabVIEW多设备控制与数据采集系统 随着科技的进步&#xff0c;自动化测试与控制系统在工业、科研等领域的应用越来越广泛。开发了一种基于LabVIEW平台开发的多设备控制与数据采集系统&#xff0c;旨在解决多设备手动设置复杂、多路数据显示不直观、数据存储不便等问题。通过RS…

c语言利用控制台实现贪吃蛇

使用控制台实现贪吃蛇需要的技能加点&#xff1a; 控制台设置&#xff08;包含于stdlib.h&#xff09;&#xff1a; 定义命令行窗口高/宽&#xff1a; system("mode con cols100 lines30"); system() 函数是一个C标准库函数&#xff0c;它允许程序执行操作系统命令…

Java中创建对象内存分析

package day31; ​ public class Pet {String name;int age;public void shout(){System.out.println("叫了一声");} } ​ package day31; ​ public class Application {public static void main(String[] args) {Pet cat new Pet();cat.name"肥波";cat…