JavaScript DOM

news2024/9/28 15:25:52

1、DOM介绍

  • DOM(Document Object Model):文档对象模型。

  • 将 HTML 文档的各个组成部分,封装为对象。借助这些对象,可以对 HTML 文档进行增删改查的动态操作。

 

1.1、Element元素的获取操作

  • 具体方法

方法名说明
getElementById (id 属性值)根据id 获得一个元素
getElementsByTagName (标签名称)根据标签名称获得多个元素
getElementsByName(name属性值)根据name 属性值获得多个元素
getElementsClassName (class属性值)根据class 属性获得多个元素
子元素对象.parentElement 属性获取当前元素的父元素

1.1.1 根据ID获取

语法:document.getElementById(id)
作用:根据ID获取元素对象
参数:id值,区分大小写的字符串
返回值:元素对象 或 null

案例代码

<body>
    <div id="time">2023-02-01</div>
    <script>
        // 因为我们文档页面从上往下加载,所以先得有标签 所以我们script写到标签的下面
        var timer = document.getElementById('time');
        console.log(timer);
        console.log(typeof timer);
        // console.dir 打印我们返回的元素对象 更好的查看里面的属性和方法
        console.dir(timer);
    </script>
</body>

1.2.1 根据标签名获取元素

语法:document.getElementsByTagName('标签名') 或者 element.getElementsByTagName('标签名') 
作用:根据标签名获取元素对象
参数:标签名
返回值:元素对象集合(伪数组,数组元素是元素对象)

案例代码

<body>
    <ul>
        <li>知否知否,应是等你好久11</li>
        <li>知否知否,应是等你好久22</li>
        <li>知否知否,应是等你好久33</li>
        <li>知否知否,应是等你好久44</li>
        <li>知否知否,应是等你好久55</li>
    </ul>
    <ul id="nav">
        <li>生僻字</li>
        <li>生僻字</li>
        <li>生僻字</li>
        <li>生僻字</li>
        <li>生僻字</li>
    </ul>
    <script>
        // 1.返回的是 获取过来元素对象的集合 以伪数组的形式存储的
        var lis = document.getElementsByTagName('li');
        console.log(lis);
        console.log(lis[0]);
        // 2. 我们想要依次打印里面的元素对象我们可以采取遍历的方式
        for (var i = 0; i < lis.length; i++) {
            console.log(lis[i]);
        }
        // 3. element.getElementsByTagName()  可以得到这个元素里面的某些标签
        var nav = document.getElementById('nav'); // 这个获得nav 元素
        var navLis = nav.getElementsByTagName('li');
        console.log(navLis);
    </script>
</body>

注意:getElementsByTagName()获取到是动态集合,即:当页面增加了标签,这个集合中也就增加了元素。

案例代码

<body>
    <div class="box">盒子1</div>
    <div class="box">盒子2</div>
    <div id="nav">
        <ul>
            <li>首页</li>
            <li>产品</li>
        </ul>
    </div>
    <script>
        // 1. getElementsByClassName 根据类名获得某些元素集合
        var boxs = document.getElementsByClassName('box');
        console.log(boxs);
     // 2. querySelector 返回指定选择器的第一个元素对象  
      //切记 里面的选择器需要加符号 .box  #nav
        var firstBox = document.querySelector('.box');
        console.log(firstBox);
        var nav = document.querySelector('#nav');
        console.log(nav);
        var li = document.querySelector('li');
        console.log(li);
        // 3. querySelectorAll()返回指定选择器的所有元素对象集合
        var allBox = document.querySelectorAll('.box');
        console.log(allBox);
        var lis = document.querySelectorAll('li');
        console.log(lis);
    </script>
</body>
  • 综合练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>元素的获取</title>
</head>
<body>
    <div id="div1">div1</div>
    <div id="div2">div2</div>
    <div class="cls">div3</div>
    <div class="cls">div4</div>
    <input type="text" name="username"/>
</body>
<script>
    //1. getElementById()   根据id属性值获取元素对象
    let div1 = document.getElementById("div1");
    //alert(div1);
•
    //2. getElementsByTagName()   根据元素名称获取元素对象们,返回数组
    let divs = document.getElementsByTagName("div");
    //alert(divs.length);
​
   //3. getElementsByClassName()  根据class属性值获取元素对象们,返回数组
    let cls = document.getElementsByClassName("cls");
    //alert(cls.length);
•
    //4. getElementsByName()   根据name属性值获取元素对象们,返回数组
    let username = document.getElementsByName("username");
    //alert(username.length);
•
    //5. 子元素对象.parentElement属性   获取当前元素的父元素
    let body = div1.parentElement;
    alert(body);
</script>
</html>

1.2、Element元素的增删改操作

  • 具体方法

方法名说明
createElement (标签名)创建一个新元素
appendChild (子元素)将指定子元素添加到父元素中
removeChild (子元素)用父元素删除指定子元素
replaceChild (新元素,旧元素)用新元素替换旧元素

  • 代码实现

<!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>
    <select id="s">
        <option>---请选择---</option>
        <option>北京</option>
        <option>上海</option>
        <option>广州</option>
    </select>
</body>
<script>
    //1. createElement()   创建新的元素
    let option = document.createElement("option");
    //为option添加文本内容
    option.innerText = "深圳";
​
    //2. appendChild()     将子元素添加到父元素中
    let select = document.getElementById("s");
    select.appendChild(option);
​
    //3. removeChild()     通过父元素删除子元素
    //select.removeChild(option);
​
    //4. replaceChild()    用新元素替换老元素
    let option2 = document.createElement("option");
    option2.innerText = "杭州";
    select.replaceChild(option2,option);
</script>

1.3、Attribute属性的操作

  • 具体方法

方法名说明
setAtrribute (属性名,属性值)设置属性
getAtrribute (属性名)根据属性名获取属性值
removeAtrribute (属性名)根据属性名移除指定的属性
style 属性为元素添加样式

  • 代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>属性的操作</title>
    <style>
        .aColor{
            color: blue;
        }
    </style>
</head>
<body>
    <a>点我呀</a>
</body>

<script>
    //1. setAttribute()    添加属性
    let a = document.getElementsByTagName("a")[0];
    a.setAttribute("href","https://www.baidu.com");

    //2. getAttribute()    获取属性
    let value = a.getAttribute("href");
    //alert(value);

    //3. removeAttribute()  删除属性
    //a.removeAttribute("href");

    //4. style属性   添加样式
    //a.style.color = "red";

    //5. className属性   添加指定样式
    a.className = "aColor";

</script>
</html>

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

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

相关文章

原因分析必知必会的十大要点

原因分析是对选定的现象进行全面深入的研究&#xff0c;找到现象背后的真正原因与深层次原因&#xff0c;然后采取合适的措施纠正问题、预防问题。如果没有找到真正的根因就采取措施&#xff0c;往往事倍功半&#xff0c;浪费了投入。那么在原因分析时&#xff0c;有哪些成功要…

adb 导入导出安卓设备里面的apk和文件

安卓设备上导出apk到电脑 &#xff1a; 第一条指令查&#xff1a;adb shell pm list package -3 //列出所有非系统三方应用如下 package:com.sangfor.vpn.client.phonepackage:com.spd.mdm.other.funcpackage:com.supcon.supplant第二条指令查路径&#xff1a;adb shell pm pa…

容器(第七篇)docker-consul

consul服务器&#xff1a; 1. 建立 Consul 服务 mkdir /opt/consul cp consul_0.9.2_linux_amd64.zip /opt/consul cd /opt/consul unzip consul_0.9.2_linux_amd64.zip mv consul /usr/local/bin/ //设置代理&#xff0c;在后台启动 consul 服务端 consul agent \ -server \…

python安装后的几个默认目录问题

python.exe位置 C:\Users\dao\AppData\Local\Programs\Python\Python311 pip默认安装的文件位置 C:\Users\dao\AppData\Local\Programs\Python\Python311\Lib\site-packages

51单片机数码管秒表仿真设计详解

51单片机数码管秒表仿真 功能说明&#xff1a; 1、4位数码管显示 2、开始暂停清零按钮控制 3、51最小单片机系统电路 4、计时功能&#xff0c;0到99.99秒计时 运行效果 #include<reg52.h>#define uchar unsigned char #define uint unsigned intuchar code Tab0[] …

山西电力市场日前价格预测【2023-06-13】

日前价格预测 预测明日&#xff08;2023-06-13&#xff09;山西电力市场全天平均日前电价为383.16元/MWh。其中&#xff0c;最高日前电价为621.63元/MWh&#xff0c;预计出现在20: 45。最低日前电价为249.69元/MWh&#xff0c;预计出现在12: 45。 以上预测仅供学习参考&#x…

京东购物车分页方案探索和落地 | 京东云技术团队

随着京东购物车应用场景的丰富化和加车渠道的多元化&#xff0c;京东购物车的商品容量从2015年至今一直在逐步增加。 2015年京东购物车由80件扩容到120件&#xff1b;2018年由120件扩容到150件&#xff1b;2020年由150件扩容到180件&#xff1b;2021年京东PLUS会员扩容到了220…

Q1净亏损1.35亿元,4G增长乏力「困扰」车规通讯模组龙头

“汽车前装从4G到5G的切换需要一定的时间&#xff0c;现阶段&#xff0c;5G的价格更高&#xff0c;国内客户从4G向5G的转换会受到一些短期影响。”这是车载通讯模组市场龙头企业—移远通信在近日投资者互动上的公开表态。 4G渗透率趋于稳定&#xff0c;5G增速不及预期&#xff…

SSH科普

参考来源&#xff1a;https://zhuanlan.zhihu.com/p/323322650 目录 1. 什么是SSH&#xff1f;2. SSH登录原理3. SSH基本用法4. SSH远程登录实例5. SSH端口转发1. 转发的参数2. 本地转发3. 远程转发 6. SSH的远程操作7. SSH的本地转发8. SSH的远程转发利用远程转发&#xff0c…

国内唯一!腾讯入选全球零信任厂商全景图

近日&#xff0c;国际权威机构Forrester发布《The Zero Trust Platforms Landscape, Q2 2023》&#xff08;以下简称“报告”&#xff09;&#xff0c;对全球29家零信任方案供应商进行了综合性评估。腾讯凭借iOA零信任安全解决方案入选报告&#xff0c;成为了国内唯一入选的零信…

ChatGPT 未来会对游戏行业带来哪些影响?

ChatGPT的出现&#xff0c;为整个游戏行业带来了新的思考。 ChatGPT是由微软发布的一个大型语言模型&#xff0c;在被训练之后能够进行对话式文本生成&#xff0c;目前已在多个领域取得了不小的进展&#xff0c;包括聊天机器人、智能客服等。 作为一款大型语言模型&#xff0c…

黑客和网络安全工程师有什么区别?如何成为一名网络安全工程师?

经常有小伙伴把黑客和网络安全工程师弄混&#xff0c;黑客和网络安全工程师是两种不同的职业&#xff0c;尽管它们都与计算机安全有关。本篇文章将告诉你黑客和网络安全工程师的区别并且教你如何成为一名网络安全工程师。 黑客和网络安全工程师有什么区别&#xff1f; 黑客通…

PyTorch 深度学习入门

&#x1f482; 个人网站:【 海拥】【萌怪大冒险】【2048】&#x1f91f; 风趣幽默的前端学习课程&#xff1a;&#x1f449;28个案例趣学前端&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼大军】&#x1f4ac; 免费且实用的计算机相关知识题库&…

比亚迪首谈智驾进展:年内量产大算力域控,感知大模型上车

作者 | 马波 编辑 | 德新 前不久&#xff0c;HiEV独家报道了比亚迪在智能驾驶领域的最新量产计划 。 比亚迪将会在今年第三季度&#xff0c;落地基于地平线征程5的高阶智驾方案&#xff0c;首项高阶智驾功能为高速导航辅助驾驶DNP&#xff0c;首发车型大概率是汉。 王传福曾…

[centos]centos7卸载显卡驱动

找到显卡驱动.run文件&#xff1a; sudo ./NVIDIA-Linux-x86_64-460.106.00-k80.run --uninstall 上面是通过run文件卸载可以很容易卸载干净&#xff0c;强烈推荐这个方法&#xff0c;如果没有可以使用命令行 yum remove nvidia-* rpm -qa |grep -i nvid|sort yum remove kmod…

跨域问题详解

本文从web开发者角度&#xff0c;浅谈跨域原理&#xff0c;总结处理方法。为什么会有跨域问题&#xff1f; 简单来说&#xff0c;浏览器不允许访问除当前页面所在源之外的其他源。 协议、域名、端口组成同一源&#xff08;origin&#xff09; 在前后端不分离的单体应用中&#…

97.实战网页构建推荐信部分第二节

上节课&#xff0c;我们的推荐信完成如下 ● 接下来我们就来完成&#xff0c;我们未完成的内容吧&#xff0c;为其添加画廊 ● 我们将图片全部添加上 ● 然后通过grid构建一个3*4的网格摆放图片 .gallery {display: grid;grid-template-columns: repeat(3, 1fr);grid-tem…

React - Geek-PC项目 文档

一款后台管理项目 - React-geek-PC 项目介绍 ● 项目功能演示 - 登录、退出 - 首页 - 内容&#xff08;文章&#xff09;管理&#xff1a;文章列表、发布文章、修改文章● 技术 - React 官方脚手架 create-react-app - react hooks - 状态管理&#xff1a;mobx - UI 组件库…

【数据分享】2000-2021年全国1km分辨率的逐日PM2.5栅格数据

PM2.5作为最主要的空气质量指标&#xff0c;在我们日常研究中非常常用&#xff01;之前我们分享过由圣路易斯华盛顿大学大气成分分析组发布的网格分辨率为0.01 0.01的PM2.5栅格数据&#xff08;可查看之前推送的文章获悉详情&#xff09;&#xff1a; 1998-2020年全国省市三级…

电脑丢失dll文件一键修复需要什么软件?快速修复dll文件的方法

在使用电脑的过程中&#xff0c;我们经常会遇到程序无法正常运行的情况&#xff0c;提示“XXX.dll文件丢失”的错误。这时候&#xff0c;很多人会感到困惑&#xff0c;不知道该如何解决。本文将详细介绍dll文件丢失的各种原因、如何使用dll修复工具进行一键修复dll丢失问题以及…