位置: 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)(灯光璀璨的夜晚)

  • 微信营销的误区(微信营销的误区是什么)

    微信营销的误区(微信营销的误区是什么)

  • 小米buds4pro支持AAC吗(小米buds4pro支持骁龙畅听吗)

    小米buds4pro支持AAC吗(小米buds4pro支持骁龙畅听吗)

  • 洋气的企业名字(洋气的qq名字)(好听企业名字)

    洋气的企业名字(洋气的qq名字)(好听企业名字)

  • 荣耀magic3至臻版怎么分屏(荣耀magic3至臻版和magic4至臻版)

    荣耀magic3至臻版怎么分屏(荣耀magic3至臻版和magic4至臻版)

  • 华为手机充电提示音在哪里设置(华为手机充电提示不是原装数据线)

    华为手机充电提示音在哪里设置(华为手机充电提示不是原装数据线)

  • qq群聊自己的麦怎么关闭(qq群聊麦克风怎么打开)

    qq群聊自己的麦怎么关闭(qq群聊麦克风怎么打开)

  • 抖音集卡做更多任务是什么意思(抖音集卡规则说明)

    抖音集卡做更多任务是什么意思(抖音集卡规则说明)

  • iphone11锁屏发红(iphone11锁屏瞬间发红)

    iphone11锁屏发红(iphone11锁屏瞬间发红)

  • 微信号被别人投诉了怎么找到那个人(微信号被别人投诉了,一般多久会封号)

    微信号被别人投诉了怎么找到那个人(微信号被别人投诉了,一般多久会封号)

  • 苹果xmqa62ch/a是什么版本

    苹果xmqa62ch/a是什么版本

  • 闲鱼不确认收货要多久才能收到钱(闲鱼不确认收货申请退款不同意能收到钱吗)

    闲鱼不确认收货要多久才能收到钱(闲鱼不确认收货申请退款不同意能收到钱吗)

  • 华为内置应用助手不见了(华为内置应用助手下载)

    华为内置应用助手不见了(华为内置应用助手下载)

  • keep能看到访客记录吗(keep怎么看访客)

    keep能看到访客记录吗(keep怎么看访客)

  • 微信怎么发两千的红包(微信怎么发两千字以上)

    微信怎么发两千的红包(微信怎么发两千字以上)

  • 网线转换器百兆和千兆有什么区别(网线转换器百兆好还是千兆好)

    网线转换器百兆和千兆有什么区别(网线转换器百兆好还是千兆好)

  • 显卡接口有哪几种(显卡接口有哪几种型号)

    显卡接口有哪几种(显卡接口有哪几种型号)

  • 电脑有多个驱动器什么意思(电脑有多个驱动器,要删除所有驱动器中的全部文件吗)

    电脑有多个驱动器什么意思(电脑有多个驱动器,要删除所有驱动器中的全部文件吗)

  • 什么叫微信聊天窗口(什么是微信聊天)

    什么叫微信聊天窗口(什么是微信聊天)

  • 微信一闪一闪是咋回事(微信一闪一闪是什么意思)

    微信一闪一闪是咋回事(微信一闪一闪是什么意思)

  • 拼多多月卡能退吗(拼多多月卡退款)

    拼多多月卡能退吗(拼多多月卡退款)

  • 三星note10美版和国行区别(三星note10美版和韩版支持国内5G吗)

    三星note10美版和国行区别(三星note10美版和韩版支持国内5G吗)

  • qq音乐绿钻豪华版有什么用(qq音乐绿钻豪华版和超级会员)

    qq音乐绿钻豪华版有什么用(qq音乐绿钻豪华版和超级会员)

  • 快手的本地作品集在哪个文件夹里(快手的本地作品怎么删除)

    快手的本地作品集在哪个文件夹里(快手的本地作品怎么删除)

  • 呼入限制怎么解除(呼入限制是什么原因)

    呼入限制怎么解除(呼入限制是什么原因)

  • Win10组策略怎么打开(Win10组策略怎么进)

    Win10组策略怎么打开(Win10组策略怎么进)

  • Pinia(二)了解和使用Store

    Pinia(二)了解和使用Store

  • 【AI绘画】我以Midjourney为主学习AI绘画效果咋样?(以我为主题画一幅画)

    【AI绘画】我以Midjourney为主学习AI绘画效果咋样?(以我为主题画一幅画)

  • 电费发票隔月开如何做账
  • 增值税发票抵扣是什么意思
  • 车辆购置税税收优惠
  • 软件产品即征即退条件
  • 设备进项税额转出会计分录
  • 原材料加工成产品的会计分录
  • 进项税额转出影响城建税吗
  • 未入账的固定资产处理的财务处理
  • 研发产品成功入库账务处理
  • 注册资本可以是0元吗
  • 小规模纳税人报销会计分录
  • 非货币性资产交换准则
  • 小规模纳税人购车好处
  • 会计发票怎么样粘贴,记账凭证也要粘上吗
  • 研发折旧会计分录
  • 税前利润总额的计算公式
  • 外购材料费用可能计入
  • 技术开发费税率13还是60
  • 新办企业注册资本和投资总额
  • 2019年化妆品
  • 建筑行业简易征收税率是5%吗?
  • WIN10专业版永久激活
  • win10系统声音有杂音
  • 桌面图标变成了一张纸
  • 应交税费的销项税额怎么算
  • PHP:xml_parser_get_option()的用法_XML解析器函数
  • php总结
  • node -v
  • php中的require
  • phpipam使用
  • 发行股票溢价计入哪里
  • 房屋租赁经营要交哪些税
  • 获取vue实例
  • phpstudy配置https
  • php gd库
  • 利润表项目本期怎么算
  • 固定资产加速折旧优惠明细表怎么填
  • 未开票收入申报对企业有什么影响
  • 实战到底究竟是什么意思啊
  • 点云入门
  • axure简单教程
  • js遇到的问题
  • php实现文件上传的函数
  • 采购的原材料无保质期
  • 增值税iva
  • 网络费用属于什么费用
  • 为什么社保卡里有钱
  • 教大家8天学通MongoDB——第一天 基础入门篇
  • 主营业务收入含义
  • 工程项目甲方是什么意思
  • 医院如何开票
  • 出差餐补算在工资里吗
  • 主营业务成本暂估怎么算
  • 待抵扣进项税会计分录实操
  • 视同销售要以什么顺序确定销售额?
  • 去年的物业费今年收到了可以确认收入吗
  • 固定资产计提折旧的方法
  • sqlmap 提权
  • mysql优化sql有哪些
  • 如何创建桌面快捷方式电脑
  • 怎么检测软件有没有毒
  • mac怎么恢复出厂设置
  • windows8.1默认壁纸
  • win10 rs5
  • win7系统IE浏览器打开跳转到360浏览器,怎么阻止
  • win10 mobile 1709
  • windows10 不能启动
  • windows7宽带连接断开怎么办
  • js提交表单,如果为空出现红色文字
  • 很不错的成语
  • windows visual studio openGL开发环境配置
  • 如何用jquery
  • itertools.permutations
  • 简述python语言
  • 安卓手机root后更流畅吗
  • jquery设置文本字体样式
  • nodejs音乐播放器
  • Python实现类似jQuery使用中的链式调用的示例
  • 如何理解税收的本质
  • 小规模纳税人应交增值税账务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设