DOM,getElement系列qureySelector系列,操作元素类型,innerHTML,innerText,value,事件绑定,操作css样式,操作属性:getArrtlibute等~

DOM,getElement系列qureySelector系列,操作元素类型,innerHTML,innerText,value,事件绑定,操作css样式,操作属性:getArrtlibute等~

DOM(Document Object Model): 文档对象模型
其实就是操作 html 中的标签的一些能力
 我们可以操作哪些内容
  - 获取一个元素
  - 移除一个元素
  - 创建一个元素
  - 向页面里面添加一个元素
  - 给元素绑定一些事件
  - 获取元素的属性
  - 给元素添加一些 css 样式
  - ...
DOM 的核心对象就是 docuemnt 对象
document 对象是浏览器内置的一个对象,里面存储着专门用来操作元素的各种方法
DOM: 页面中的标签,我们通过 js 获取到以后,就把这个对象叫做 DOM 对象

document文档对象

window.document


属性和方法:(分为getElement系列和qureySelector系列)

  • getElementById('id属性值')(id是唯一值,多个id相同一起测试,会返回第一个元素
  • getElementsByClassName('class属性')(返回是一组元素,长得像数组,称伪数组,类数组!

类数组和数组Array区别

1.类数组不能用Array的常用方法

2.类数组可以遍历,可以使用 [ ] 访问元素

      function test2(){var divEles = document.getElementsByClassName('d1')console.log(divEles)for(var i =0;  i < divEles.length; i++){console.log(divEles[i])}
  • getElementsByTagName('标签名')(返回是一组元素,长得像数组)通过标签名获取,必须使用索引才能准确的得到DOM元素。
  • getElementsByName('name属性')

  • querySelector:按照选择器的方式来获取元素,只能获得一个元素,并且是页面中第一个满足条件的元素。
  •  querySelectorAll:按照选择器的方式来获取元素,可以获取所有满足条件的元素,以一个伪数组的形式返回,获取到的是一组数据,需要用索引来获取每个DOM元素。

 将以上方法对照起来看,会更加直观的理解

<body><div id="box">我第一</div> <div class="box">我第二</div><div>我第三</div><div id="box">我第四</div> <div class="box">我第五</div><div>我最小</div><script>// var boxEle=document.getElementById('box') //获取页面中id为box的div标签,只能获得一个元素// console.log(boxEle)// var boxEle=document.getElementsByClassName('box') //获得一组元素// console.log(boxEle)// var boxEle=document.getElementsByTagName('div')//获得一组元素// console.log(boxEle)// console.log(boxEle[0])// console.log(document.querySelector('div')) //获取第一个div元素// console.log(document.querySelector('.box')) //获取第一个类名为box的// console.log(document.querySelector('#box'))//获取页面中第一个id名为box的元素// console.log(document.querySelectorAll('div')) //获取全部div元素// console.log(document.querySelectorAll('.box')) //获取全部类名为box的// console.log(document.querySelectorAll('#box'))//获取页面中全部id名为box的元素</script>

操作其内容  :

               1. 获取内容 * .innerHTML

  <div><p><span>hello</span></p></div><!-- 获取div中的结构!!!) --><script>var div=document.querySelector('div')console.log(div.innerHTML)</script>

                2. *.innerHTML = '新内容'  // 设置内容

<body><div></div><script>var div=document.querySelector('div')div.innerHTML='<span>你好</span>'</script>
</body>

                 3.  innerText 获取内容

 <div><p><span>hello</span></p></div> <!-- 获取div中的内容hello!!!) --><script>var div=document.querySelector('div')console.log(div.innerText)</script>
       <div></div><!-- 会把 <p>hello</p>作为文本出现在Div元素里面,而不会把P解析成标签--><script>var div=document.querySelector('div')div.innerText='<p>hello</p>'</script>

 

innerText 和 innerHTML 区别:

 1. innerText 以纯文本形式显示

2. innerHTML

                   value  表单元素内容

                   <input type="text"/>

                  操作非表单元素 innerText 和 innerHTML

<body><h2 id="title">元素一</h2><input type="text" name="message" placeholder="请输入内容" value="rose"><script>function test1(){var h2Ele = document.querySelector('#title')// h2Ele.innerHTML = '<h3>innerText设置的内容</h3>'  //以内容显示h2Ele.innerText = '<h3>innerText设置的内容</h3>'//以纯文本显示,即:内容: &lt;h3&gt;innerText设置的内容&lt;/h3&gt;console.log('内容 :',h2Ele.innerHTML);}test1()</script>
</body>

   操作表单元素  value:

    <h2 id="title">元素一</h2><input type="text" name="message" placeholder="请输入内容" value="rose"> function test2(){var inputEle = document.querySelector('input[name="message"]')inputEle.value = 'jack'console.log( inputEle.value )}test2()

 

 

 运用综合知识,来写一个岛上书店的案例,现实点击按钮时,会有相关的操作~

<!DOCTYPE html>
<html><head lang="en"><meta charset="UTF-8"><title>操作内容示例</title><style type="text/css">body,input,div,p {margin: 0;padding: 0;}body {font-size: 14px;font-family: "微软雅黑";line-height: 25px;}.content {width: 550px;margin: 0 auto;}.content img {float: left;width: 150px;}.r {float: left;width: 400px;}input[name="changeBook"] {width: 100px;height: 28px;line-height: 28px;text-align: center;font-size: 14px;font-family: "微软雅黑";margin: 10px 0 10px 0;}input[name="season"] {width: 50px;text-align: center;}.input {border: 1px solid green;font-size: 18px;font-weight: bold;}</style>
</head><body><div class="content"><img src="images/book.jpg" alt="岛上书店" /><div class="r"><div id="book">书名:岛上书店</div><input id="updatename" name="changeBook" value="换换名称" type="button"onclick="onUpdateBookName()" /><br>四季名称:<input name="season" type="text" value="春" /><input name="season" type="text" value="夏" /><input name="season" type="text" value="秋" /><input name="season" type="text" value="冬" /><br><br><input name="b2" type="button" value="input内容" onclick="onShowInput()" /><input name="b3" type="button" value="四季名称" onclick="onSeason()" /><input name="b4" type="button" value="清空页面内容" onclick="onClear()" /><p id="replace"></p></div></div><script type="text/javascript">/*做什么?点击换换名称按钮,更换书名1. 绑定点击事件2. 更改名内容*/function onUpdateBookName() {var divEle = document.querySelector('#book')divEle.innerHTML = '书名:javascript高级编程'}/*做什么?点击input内容按钮,将所有input按钮内容值拼接成字符串设置给p标签作为内容显示1. input内容按钮点击事件2. 将所有input标签内容值拼接成字符串3. 操作p标签内容*/function onShowInput() {var inputEles = document.querySelectorAll('input') //类数组//循环遍历类数组var str = ''for(var i = 0; i < inputEles.length; i++){var inputEle = inputEles[i]  // input元素str = str + inputEle.value + '  '}var pEle = document.querySelector('#replace')pEle.innerHTML = str}/*做什么?点击四季名称按钮,拼接四季名称显示*/function onSeason() {var seasonInputs = document.querySelectorAll('input[name="season"]')var str = ''for(var i = 0; i < seasonInputs.length; i++){var inputEle = seasonInputs[i]str = str +  inputEle.value + ' ' }var pEle = document.querySelector('#replace')pEle.innerHTML = str}function onClear() {document.write('')}</script>
</body></html>

  dom操作样式

          使用js代码动态操作样式

          1. 行间样式 style

              ele.style.样式名=>样式值

              ele.style.样式名 = 样式值

          2. 类样式

               ele.className=类名

                  注: 后面的类名会覆盖前面的类名   

               ele.classList.add(类名1)

               ele.classList.add(类名2)

                   '类名1 类名2 '

               获取非行间样式

                  window.getComputedStyle(元素).样式名

                     =>样式值

<style>.d1 {width: 200px;height: 200px;background-color: skyblue;}.d2{text-align: center;}.d3{width: 200px;height: 200px;background-color: pink;}</style></head><body><h2 style="color: red;">操作样式</h2><div>元素一</div><h3 class="d3">元素二</h3><p></p><button onclick="getStyleTest()">获取style样式</button><button onclick="setStyleTest()">设置style样式</button><button onclick="setClassStyle()">设置class样式</button><button onclick="getClassStyle()">获取非行间样式</button><script>// 获取h2标签的行内样式,显示h2的颜色function getStyleTest(){var h2Ele = document.querySelector('h2')var colorValue = h2Ele.style.color  //行内式var pEle = document.querySelector('p')pEle.innerHTML = colorValue}// 更改h2字体大小为44px ,背景色为蓝色function setStyleTest(){var h2Ele = document.querySelector('h2')h2Ele.style.fontSize = '44px'  // js代码操作样式名, 样式名用驼峰命令 font-size  -> fontSizeh2Ele.style.backgroundColor = 'skyblue'}function setClassStyle(){var divEle = document.querySelector('div')// divEle.className = 'd1'// divEle.className = 'd2'divEle.classList.add('d1')divEle.classList.add('d2')}// 控制台输出w为200pxfunction getClassStyle(){var h3Ele = document.querySelector('h3')var w = window.getComputedStyle(h3Ele).widthconsole.log('w :',w);}</script>

操作属性:js代码动态获取属性值或设置属性

1.获取 ele.getAttribute(属性名)=>属性值 

 ele.属性值 只针对本身拥有的属性,不能拿到自定义的属性

 设置属性:

ele.setAttribute(属性名,属性值)

ele.属性名=属性值

 移除属性:ele.removeAttribute(属性名)

 data-属性名

   <h2 id="title" class="d1" a="100" b="200">元素一</h2><h3>元素二</h3><a href="">百度</a><img src="./06练习岛上书店/images/11239.png" alt="图片"><img src="" alt="图片2"><!-- 自定义属性 --><h4 data-index="1001" data-score="98">元素三</h4><button onclick="getAttr()">获取属性</button><button onclick="setAttr()">设置属性</button><button onclick="removeAttr()">移除属性</button><button onclick="getMyAttr()">获取自定义属性</button><script>function getAttr(){var h2Ele = document.querySelector('h2')  // 获取h2元素var imgEle = document.querySelector('img')  // 获取img元素var idValue =  imgEle.getAttribute('src')  // 获取h2元素id属性值console.log(idValue)console.log(imgEle.src)}function setAttr(){var h3Ele = document.querySelector('h3')h3Ele.setAttribute('id','titl2')h3Ele.setAttribute('a','1000')var imgEle = document.querySelectorAll('img')[1]// imgEle.setAttribute('src','./06练习岛上书店/images/book.jpg')imgEle.src='./06练习岛上书店/images/book.jpg'}function removeAttr(){var h2Ele = document.querySelector('h2')  // 获取h2元素h2Ele.removeAttribute('a')}function getMyAttr(){var h4Ele = document.querySelector('h4')var index =  h4Ele.dataset.scoreconsole.log(index)}

操作事件:

给元素绑定点击事件 ,直接给元素添加onclick属性事件

更提倡另外一种 :将元素和事件行为分离

 <button>按钮</button><div>元素一</div><script>var btn = document.querySelector('button')btn.onclick = function(){alert('绑定事件')}var divEle = document.querySelector('div')divEle.onclick = function(){divEle.innerHTML = '今天是周五'}</script>

 若有错误,请指正!

 

样式,  属性,事件

发布者:admin,转转请注明出处:http://www.yc00.com/web/1730974110a3589683.html

相关推荐

  • 【Linux】用C++实现UDP通信:详解socket编程流程

    协议(Protocol)协议 是计算机或通信系统中,不同实体(如设备、程序、服务等)之间进行交互和通信时,共同遵循的一套规则和标准。它定义了数据的格式、传输方式、错误处理、安全机制等,确保通信双方能够正确理解彼此的信息并完成协作。协议的核心

    4小时前
    00
  • 替换WIN键和Ctrl键

    用惯了Mac&#xff0c;最近切换到了win系统的电脑&#xff0c;老是习惯按win键&#xff0c;所以就想着把系统的win键和ctrl键对调。然后网上就找到可如下方法&#xff1a; 按下winr&

    4小时前
    00
  • 【MySQL】001.MySQL安装

    一. MySQL在Ubuntu 20.04 环境安装1.1 更新软件包列表代码语言:javascript代码运行次数:0运行复制root@hcss-ecs-eaf1:~MySQL# sudo apt-get update1.2 安装MyS

    4小时前
    20
  • 【Vue #2】脚手架 &amp; 指令

    一、脚手架脚手架:一个保证各项工作顺利开展的平台,方便我们 拿来就用,零配置1. Vue 代码开发方式相比直接 script 引入 vue 源码,有没有更好的方式编写vue代码呢?① 传统开发模式:基于html文件开发Vue,类似jQuer

    4小时前
    00
  • 13.Python frozenset集合详解

    什么是frozenset?frozenset是Python中的不可变集合类型,它具有普通集合(set)的大部分特性,但一旦创建就不能修改。这种不可变性使得frozenset可以作为字典的键或其他集合的元素。frozenset vs set

    3小时前
    00
  • 基于Python+Vue开发的房产销售管理系统源码+运行

    本项目是一款基于 Python 和 Vue 开发的房产销售管理系统,采用前后端分离架构设计,专为大学生课程设计作业而开发。其主要目的在于帮助学生掌握 Python 编程技能,同时强化其在项目设计与开发方面的实践能力。通过开发这一房产销售管理

    3小时前
    00
  • Python 实现如何电商网站滚动翻页爬取

    一、电商网站滚动翻页机制分析电商网站如亚马逊和淘宝为了提升用户体验,通常采用滚动翻页加载数据的方式。当用户滚动页面到底部时,会触发新的数据加载,而不是一次性将所有数据展示在页面上。这种机制虽然对用户友好,但对爬虫来说却增加了爬取难度。以淘宝

    3小时前
    00
  • 怎么构造思维链数据?思维链提示工程的五大原则

    我来为您翻译这篇关于思维链提示工程的文章,采用通俗易懂的中文表达:思维链(CoT)提示工程是生成式AI(GenAI)中一种强大的方法,它能让模型通过逐步推理来解决复杂任务。通过构建引导模型思考过程的提示,思维链能提高输出的准确性、连贯性和可

    3小时前
    00
  • 一款 .NET 开源、免费、轻量级且非侵入性的防火墙软件

    前言在当今数字化时代,系统服务器网络安全已成为我们日常生活和工作中不可忽视的重要议题。随着网络威胁的日益复杂和多样化,选择一款高效、可靠且易于使用的防火墙软件显得尤为重要。今天大姚给大家分享一款 .NET 开源、免费、轻量级且非侵入性的防火

    3小时前
    00
  • .NET 平台上的开源模型训练与推理进展

    .NET 平台上的开源模型训练与推理进展作者:痴者工良博客:电子书仓库:Maomi.Torch 项目仓库:.Torch一、 .NET AI 生态概述背景介绍.NET 生态系统已经成为支持多种编程语言、多种平台和大量开发工具的强大生态系统。最

    3小时前
    00
  • 从零到一:如何利用开源资源踏上AI学习之旅

    从零到一:如何利用开源资源踏上AI学习之旅大家好,我是Echo_Wish。在当下AI如火如荼的时代,学习AI已经不是科研学术的专属了。无论是程序员、学生,甚至是普通的爱好者,只要有一台电脑和好奇心,都可以通过开源资源开启自己的AI学习之旅。

    3小时前
    00
  • 蓝桥杯救命系列(省三必会,暴力解决)

    1.题目概述这个题目其实我看了好几天了,这个是苯环哥哥出的一个题目,在洛谷这个网站上,这个网站我一直都有听说过,但是自己也是第一次使用,在这个代码的编译相关的过程上面确实是遇到了很多的问题,现在还没有完全解决,但是我觉得这个时候有点收获,想

    3小时前
    00
  • AI编程工具与初级开发者:一场「替代」还是「共生」的讨论

    在硅谷某科技公司的会议室里,一场关于“是否裁撤初级程序员”的争论持续了三小时。一方认为,AI工具已能自动生成80%的模板代码,初级开发者“性价比过低”;另一方则反驳:“没有新人的培养,五年后谁来设计架构?”这场辩论折射出一个全球性焦虑:当A

    3小时前
    00
  • EasyControl:一秒吉卜力Flux的Controlnet生态全了附工作流

    我怎么记得,Midjourney V7才发布2天,还在用MJ素材炼丹的时候,大家竟然还不知道怎么用(白嫖)MJ V7?请看VCR用上了白嫖GPT4O!!!选择AI绘画,自动选择V7版本,言归正传,Flux的Controlnet生态感

    3小时前
    00
  • docker搭建zabbix监控

    官网部署文档创建统一的网络代码语言:bash复制docker network create --subnet 172.20.0.016 --ip-range 172.20.240.020 zabbix-net搭建mysql数据库代码语言

    2小时前
    00
  • 2025年互联网公司DevOps工具选型指南:国产化与高效协同

    在2025年,随着云计算、容器化和自动化技术的普及,DevOps工具链的选型成为互联网公司提升开发效率和运维能力的关键。本文将重点推荐Gitee DevOps作为国产化的DevOps平台,并结合其他主流工具,探讨如何构建高效、安全且灵活的D

    2小时前
    00
  • 推荐一个简化配置docker

    大家好,波哥又来给大家推荐好东西啦!项目概述DockerComposeMaker (DCM) 是一款专为家庭服务器环境设计的自托管解决方案,致力于简化和加速容器化应用的部署流程。通过智能化的配置生成引擎,用户能够快速构建符合生产标准的 d

    2小时前
    00
  • PolarDB MySQL 加索引卡主的整体解决方案

    在使用PolarDB for MySQL的过程中,我们遇到一个问题,PolarDB 8.02的小版本8.02.2.24 在添加索引的时候,会有部分情况无法添加索引,添加索引失败。具体表现是如下图:在添加索引后会停滞,如果你等不及,直接KIL

    2小时前
    20
  • 基于kodcloud开源项目,为研究生课题室搭建文件床

    1.背景    事情是这样的,我们课题室习惯让我们两周开一次组会,研一总共有6人,由于课题室基本上是一个方向,顶会论文只有那么多,老师要求为了让我们尽可能多的接触不同的论文,采用了一种方案:将6个人划分成2组,3个人一组,每周开一次讨论班,

    2小时前
    00
  • 2025年信创环境下性能测试工具,如何模拟高并发场景?

    2025年信创环境下性能测试工具,如何模拟高并发场景?信创环境下性能测试工具的重要性在数字化快速发展的时代,信创产业蓬勃兴起,其旨在实现信息技术领域的自主创新与安全可控。信创环境下的各类应用系统承担着关键业务,对其性能的要求愈发严格。性能测

    2小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信