位置: IT常识 - 正文

【JavaScript】基于querySelector / querySelectorAll对元素的操作,为你的DOM API基础扫盲~(javascript基础语法)

编辑:rootadmin
【JavaScript】基于querySelector / querySelectorAll对元素的操作,为你的DOM API基础扫盲~

目录

一、通过querySelector / querySelectorAll获取元素

1.1 单个标签选中

1.2 多个标签选中

 二、基于这组DOM API,对元素进行操作

2.1 innerHTML获取/修改元素内容

2.2获取/修改元素属性

三、单标签元素属性的获取和修改

3.1 value

3.2checked

3.3 type

四、样式属性的修改和获取

4.1 fontSize行内样式操作

4.2 类名样式操作

五、操作节点

5.1、新增节点

5.2、删除结点


一、通过querySelector / querySelectorAll获取元素

推荐整理分享【JavaScript】基于querySelector / querySelectorAll对元素的操作,为你的DOM API基础扫盲~(javascript基础语法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript基础笔记,javascript基础编程,javascript基础编程,js基类,javascript基于,javascript基础,javascript基础,js基类,内容如对您有帮助,希望把文章链接给更多的朋友!

        浏览器提供的一个全局对象,类似于CSS中的选择器,可以精准的获取元素对象,这组API都来自于document下,document是浏览器提供的一个全局对象,表示当前页面DOM API基本都是documet对象的方法;

1.1 单个标签选中

        对于单个标签元素的获取,使用querySelector,即可;

如下代码:

<div class="hello" id="hi">你好</div> <script> let div = document.querySelector('div'); console.log(div); </script>

这时候就打开浏览器按下F12,选中控制台,就可以发现,刚刚获取的div元素结果都获取到了;(如下图)

1.2 多个标签选中

        querySelector只是获取单个元素标签,当出现多个相同的元素标签时,只会选中第一个;如果想把多个元素都获取到,可以使用querySelectorAll来完成操作,这个时候返回值就是一个数组,每个元素是一个对象;

如下代码:

<div class="hello" id="hi">你好</div> <div class="word">世界</div> <div class="China">中国</div> <script> let divs = document.querySelectorAll('div'); console.log(divs); </script>

打开浏览器按下F12,选中控制台就可以发现:(如下图)

 二、基于这组DOM API,对元素进行操作2.1 innerHTML获取/修改元素内容

        通过innerHTML获取的是标签内部的子元素内容,所以只适用于双标签,单标签不可以的

获取元素并修改div内容(如下代码)

<div> <span>hello</span> <span>world</span> </div> <script> let div = document.querySelector('div'); //读取元素 console.log(div.innerHTML); //修改元素 div.innerHTML = '<p>这里修改了div元素里的内容</p>' console.log(div.innerHTML); </script>

执行效果如下图:

2.2获取/修改元素属性

        通过querySelector / querySelectorAll对元素对象的获取,可以通过此对象对标签属性的修改,修改的就是标签中写的键值对;

如下代码:点击空的a标签,修改href;(不光是这个栗子,其他所有标签的属性也是通过类似的方法进行操作)

<a href="#">点我跳转百度</a> <script> let a = document.querySelector('a'); a.onclick = function() { a.href = "https://www.baidu.com"; } </script>三、单标签元素属性的获取和修改3.1 value

        通过value获取单标签元素的内容,例如input的标签中,value表示了输入框的内容,修改他,浏览器上的样式也会跟着修改;

如下代码:点击计数(按下+,数字加一,按下-,数字减一)

<input type="text" value="0"> <button class="add">+</button> <button class="sub">-</button> <script> let input = document.querySelector('input'); let add = document.querySelector('.add'); let sub = document.querySelector('.sub'); add.onclick = function() { //这里注意需要转化为int类型,否则就是字符串 let oldValue = parseInt(input.value); oldValue = parseInt(oldValue + 1); input.value = oldValue; } sub.onclick = function() { //这里注意需要转化为int类型,否则就是字符串 let oldValue = parseInt(input.value); oldValue = parseInt(oldValue - 1); input.value = oldValue; } </script>3.2checked

        checked表示了当前复选框的状态——被选中或者未被选中;

如下代码:(单选和全选)

<span>你有什么爱好?</span><br> <input type="checkbox" class="one">弹琴<br> <input type="checkbox" class="one">唱歌<br> <input type="checkbox" class="one">健身<br> <input type="checkbox" class="all">全选<br> <script> let solo = document.querySelectorAll('.one');//返回一个数组 let all = document.querySelector('.all'); all.onclick = function() { for(let i = 0; i < solo.length; i++) { solo[i].checked = all.checked; } } </script>3.3 type

        表示了当前单标签的type属性是什么,同时也可以对其进行修改;

【JavaScript】基于querySelector / querySelectorAll对元素的操作,为你的DOM API基础扫盲~(javascript基础语法)

如下代码:(显示密码和隐藏密码)

<span>输入密码:</span> <input type="password"> <button>显示密码</button> <script> let input = document.querySelector('input'); let button = document.querySelector('button'); button.onclick = function() { if(input.type == 'password') { input.type = 'text'; button.innerHTML = '隐藏密码'; }else if(input.type == 'text') { input.type = 'password'; button.innerHTML = '显示密码'; }else { alert('类型错误!') } } </script>四、样式属性的修改和获取4.1 fontSize行内样式操作

       CSS中的元素属性,都可以通过JS进行修改,通过 元素.style.属性 即可得到style的属性,例如fontSize,这个属性名和CSS中的样式名是对应的,但是CSS里使用脊柱命名,js中是使用小驼峰命名,于是CSS中的font-size就可以认为等价于fontSize;

如下代码:点击字体,开始变大

<h2 style="font-size: 30px;">点击我可以变大</h2> <script> let h2 = document.querySelector('h2'); h2.onclick = function() { let oldSize = h2.style.fontSize; oldSize = parseInt(oldSize); oldSize += 10; //设置样式的值的时候一定要带上单位! h2.style.fontSize = oldSize + 'px'; } </script>4.2 类名样式操作

        CSS开发中最常用的是通过类选择器进行选择,通过修改class属性,实现修改样式的效果,而在JS中通过 元素.className 的方式获得属性,因为在 JS中class是一个关键字,于是就用className来表示这个类属性了~

如下代码:(白天模式and夜间模式)

<style> /*白天模式*/ .light { color: black; background-color: white; } /*夜间模式*/ .night { color: aliceblue; background-color: black; } /*将div铺满整个网页*/ /*html铺满其父类——整个浏览器*/ html { height: 100%; } /*body铺满其父类html*/ body { height: 100%; } /*div铺满其父类body*/ div { height: 100%; } </style> <div class="light"> Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae maiores maxime corrupti quaerat blanditiis laudantium odio. Quo totam temporibus quia earum enim. Doloremque ipsam sed debitis quod soluta, ea necessitatibus? </div> <script> let div = document.querySelector('div'); div.onclick = function() { if(div.className == 'light') { div.className = 'night'; }else { div.className = 'light'; } } </script>五、操作节点5.1、新增节点

分为两个步骤:

第一步:创建元素结点(如下代码)

<body> <script> let div = document.createElement('div'); div.id = 'mydiv';//设置id属性 div.className = 'divName';//设置class属性 div.innerHTML = '好久不见你还好吗?'; console.log(div); </script></body>

解释:

        此时浏览器上并不会有显示,只是创建出了一个新的div结点并填充了属性;通过写下console.log(div),可以在浏览器的控制台里观察到此标签;(下如图)

第二步:把元素结点插入到dom树中;(有两种方法)

        方法一:通过appendChild 或者 append将结点插入到指定结点的最后一个孩子结点的后面(如下代码)

<body> <div class="target"> <div>1</div> <div>2</div> <div>3</div> </div> <script> let div = document.createElement('div'); div.id = 'mydiv';//设置id属性 div.className = 'divName';//设置class属性 div.innerHTML = '好久不见你还好吗?'; console.log(div); let target = document.querySelector('.target'); target.appendChild(div);//这里也可以使用append达到同样的效果 </script></body>

效果如下:(浏览器页面)

 效果如下:(浏览器控制台)

         方法二:使用 insertBefore(要插入的结点,要插入的位置) 将节点插入到指定的节点位置(如下代码,插入到下标为1的位置;“注意:下标从0开始”)

<body> <div class="target"> <div>1</div> <div>2</div> <div>3</div> </div> <script> let div = document.createElement('div'); div.id = 'mydiv';//设置id属性 div.className = 'divName';//设置class属性 div.innerHTML = '好久不见你还好吗?'; console.log(div); let target = document.querySelector('.target'); target.insertBefore(div, target.children[1]);//表示插入到第1个孩子结点的位置(下标从0开始) </script></body>

效果如下:(浏览器页面)

  效果如下:(浏览器控制台)

5.2、删除结点

使用 removeChild 删除子节点

如下代码:

<div id="top"> <div>1</div> <div id="nested">我是要被删除的结点</div> <div>2</div> </div> <script> let d = document.getElementById("top"); let nested = document.getElementById("nested"); let throwawayNode = d.removeChild(nested); </script>

注意:

返回值为该被删除节点;被删除节点只是从 dom 树被删除了, 但是仍然在内存中, 可以随时加入到 dom 树的其他位置;

本文链接地址:https://www.jiuchutong.com/zhishi/288826.html 转载请保留说明!

上一篇:【YOLO】YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测(yolov5m)

下一篇:灯光璀璨的曼哈顿下城,美国纽约 (© New York On Air/Offset/Shutterstock)(灯光璀璨的夜晚)

  • df -h命令(df -h命令参数详解linux)

    df -h命令(df -h命令参数详解linux)

  • 微信商家积分在哪里查询和兑现(微信商家 积分)

    微信商家积分在哪里查询和兑现(微信商家 积分)

  • 钉钉重新提交作业老师会知道吗(钉钉重新提交作业老师知道吗)

    钉钉重新提交作业老师会知道吗(钉钉重新提交作业老师知道吗)

  • 苹果手机拍照有黑斑(苹果手机拍照有斑值得买吗)

    苹果手机拍照有黑斑(苹果手机拍照有斑值得买吗)

  • 毒app不接受多久能退钱(毒app拒收怎么处理)

    毒app不接受多久能退钱(毒app拒收怎么处理)

  • 怎样恢复快手查找功能(快手恢复记录)

    怎样恢复快手查找功能(快手恢复记录)

  • qq密友值双方一样吗(qq密友值会消失吗)

    qq密友值双方一样吗(qq密友值会消失吗)

  • 手机进水面容id识别不了(手机进水面容id停用 摄像头没坏)

    手机进水面容id识别不了(手机进水面容id停用 摄像头没坏)

  • 微信群管理员可以设置几个(微信群管理员可以添加管理员吗)

    微信群管理员可以设置几个(微信群管理员可以添加管理员吗)

  • qq精选照片为什么上传不上去(QQ精选照片为什么模糊)

    qq精选照片为什么上传不上去(QQ精选照片为什么模糊)

  • 抖音可以发布多长的视频(抖音可以发布多少个作品)

    抖音可以发布多长的视频(抖音可以发布多少个作品)

  • 怎么看华为手机激活时间(怎么看华为手机出厂日期)

    怎么看华为手机激活时间(怎么看华为手机出厂日期)

  • 淘宝退款成功了为什么还有确认收货(淘宝退款成功了但是货收到了怎么办)

    淘宝退款成功了为什么还有确认收货(淘宝退款成功了但是货收到了怎么办)

  • 三星s10刷新率多少hz(三星s10 5g屏幕刷新率)

    三星s10刷新率多少hz(三星s10 5g屏幕刷新率)

  • 128g实际容量是多少(128g实际容量是多少m)

    128g实际容量是多少(128g实际容量是多少m)

  • 微机内存容量为4g指的是(微机内存容量为128m指的是)

    微机内存容量为4g指的是(微机内存容量为128m指的是)

  • 趣步现在怎么置换不了了(趣步是怎样一个模式)

    趣步现在怎么置换不了了(趣步是怎样一个模式)

  • 电脑微信怎么升级版本(电脑微信怎么升级到最新版本,让我们一起来看看吧!)

    电脑微信怎么升级版本(电脑微信怎么升级到最新版本,让我们一起来看看吧!)

  • 小米8如何取消来电转接(小米8如何取消主题)

    小米8如何取消来电转接(小米8如何取消主题)

  • nx629j是什么手机(nx659j是什么手机)

    nx629j是什么手机(nx659j是什么手机)

  • 奥维互动地图怎么导航(奥维互动地图怎么输入坐标找位置)

    奥维互动地图怎么导航(奥维互动地图怎么输入坐标找位置)

  • 探探如何加微信不封号(探探怎么加好友聊天啊)

    探探如何加微信不封号(探探怎么加好友聊天啊)

  • 绿钻怎么关闭话费自动续费(怎么关闭绿钻的自动续费)

    绿钻怎么关闭话费自动续费(怎么关闭绿钻的自动续费)

  • 华为p30反充电(华为p30反向充电怎么用不起)

    华为p30反充电(华为p30反向充电怎么用不起)

  • 医院要交什么费用
  • 个人出租商用房税率
  • 税务机关采取哪些行政
  • 出口退税政策
  • 去税务局开增值税专用发票需要缴费吗
  • 融资租入的固定资产需要计提折旧吗
  • 教育附加费税率怎么算
  • 其他应付款无法支付规定
  • 公司改名之前发工资吗
  • 企业清算过程中应收应付的处置
  • 如何进行无形资产核算
  • 基建贷款贴息账户有哪些
  • 装修项目展示厅费用支出列什么科目?
  • 收到社保补差款怎么办
  • 固定资产认证进项在勾选平台勾吗
  • 领备用金时会计怎么做分录
  • 车间设备维修费计入制造费用吗
  • 企业所得税汇算清缴退税分录
  • 定额发票上盖什么章
  • 一般纳税人提供服务税率
  • 个体户交税起征点 2023年
  • 服务不动产和无形资产扣除项目有哪些
  • 小规模纳税人发票图片
  • 办理转移登记需要什么资料
  • win11正式版好用吗
  • win11安装失败无法开机
  • windows10如何开启夜间模式
  • 让记事本文件自动删除
  • 抵押房产的保险能退吗
  • 跨年退税怎么处理
  • 计提税金及附加的金额如何算
  • 银行票据贴现业务发展中遇到的困难
  • 从午夜穹顶看育空河,加拿大育空道森市 (© Robert Postma/Getty Images)
  • 供应商自身的品质问题
  • 来料加工的账务处理
  • 固定资产清理净损失为什么在贷方
  • win10系统的安装
  • php实现留言板功能怎么用
  • auto.js 逆向
  • 微软的人工智能ChatGPT
  • php怎么转go
  • 设计公司发生的费用
  • 所有者权益总计是什么
  • 税前扣除是什么时候
  • 收到工会经费返还属于现金流量表哪
  • 公司基本户可以注销吗
  • 农机销售融资贷款流程
  • 上季度忘记申报个税了
  • 国际货运代理企业不得从事的业务是
  • 一般纳税人销售自己使用过的汽车
  • 集团公司收到的上级工作秘密比照国家
  • 如果停产怎么计算成本
  • 公司购买床垫如何做账
  • 申请个税退税账号是什么
  • 小规模纳税人增值税计算公式
  • 小规模纳税人没有进项发票违法吗
  • 固定资产折旧计算表模板
  • 申报表怎么更正
  • 计提工资和发放工资的账务处理
  • 可持续增长率和内部增长率的区别
  • 私营公司融资租房合法吗
  • 日记账的建账工作
  • 在查询结果中添加字母
  • oracle基础知识
  • win8系统的运行在哪里打开
  • apache not found
  • spybotsd.exe - spybotsd 是什么文件进程
  • qvp32.exe - qvp32是什么进程 有什么作用
  • mac系统怎么共享文件夹
  • python中的json
  • 推荐一篇故事并说明理由
  • pycharm远程调试代码
  • unity3d官方教程
  • 禁止所有陌生人的来电设置
  • 税务财务负责人承担什么责任
  • 江西省税务总局官网
  • 淮北市国家税务总局电话
  • 客运站汽车票查询真伪
  • 新一轮税制改革的背景是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设