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

  • wps搜索快捷键ctrl加什么(wps搜索快捷键打不开怎么办)

    wps搜索快捷键ctrl加什么(wps搜索快捷键打不开怎么办)

  • qq好友恢复系统三年内(qq好友恢复系统登录入口)

    qq好友恢复系统三年内(qq好友恢复系统登录入口)

  • 入耳式耳机怎么换胶套(入耳式耳机怎么佩戴)

    入耳式耳机怎么换胶套(入耳式耳机怎么佩戴)

  • QQ为什么随心贴不显示(为什么qq随心贴有的人看不见)

    QQ为什么随心贴不显示(为什么qq随心贴有的人看不见)

  • 快手私信删除了为啥还显示(快手私信删除了还能查到吗)

    快手私信删除了为啥还显示(快手私信删除了还能查到吗)

  • 手机外放没有声音但是耳机有声(手机外放没有声音修理多少钱)

    手机外放没有声音但是耳机有声(手机外放没有声音修理多少钱)

  • 如何把超时的消息撤回(超出时间如何撤回)

    如何把超时的消息撤回(超出时间如何撤回)

  • 小来早晚安公众号安全吗(小来早晚安公众号如何取消掉小程序的内容显示)

    小来早晚安公众号安全吗(小来早晚安公众号如何取消掉小程序的内容显示)

  • 苹果手机充电发热很烫 开不了机(苹果手机充电发热)

    苹果手机充电发热很烫 开不了机(苹果手机充电发热)

  • 微信公众号可以看到谁阅读了吗(微信公众号可以设置几个管理员)

    微信公众号可以看到谁阅读了吗(微信公众号可以设置几个管理员)

  • 华为EMUI11升级时间(华为手机更新emui11)

    华为EMUI11升级时间(华为手机更新emui11)

  • 钉钉收不到视频会议提醒(钉钉收不到视频邀请)

    钉钉收不到视频会议提醒(钉钉收不到视频邀请)

  • 进好友朋友圈不能点赞(进好友朋友圈不让别人看)

    进好友朋友圈不能点赞(进好友朋友圈不让别人看)

  • 苹果手机下载软件一直无法安装(苹果手机下载软件不需要密码怎么设置)

    苹果手机下载软件一直无法安装(苹果手机下载软件不需要密码怎么设置)

  • cpu使用率多少算正常(cpu使用率多少算高)

    cpu使用率多少算正常(cpu使用率多少算高)

  • 华为p30pro自带的膜要撕掉吗(华为p30pro自带的耳机是什么型号)

    华为p30pro自带的膜要撕掉吗(华为p30pro自带的耳机是什么型号)

  • 怎么申请多个拼多多号(如何申请多个拼多多)

    怎么申请多个拼多多号(如何申请多个拼多多)

  • 图片越大清晰度越高吗(图片大小跟清晰度有关吗)

    图片越大清晰度越高吗(图片大小跟清晰度有关吗)

  • iphonex怎么反向充电(iphonex如何反向充电)

    iphonex怎么反向充电(iphonex如何反向充电)

  • word页面视图变小了(word页面视图变大了)

    word页面视图变小了(word页面视图变大了)

  • 微信登录抖音权限怎么设置(微信登录抖音权限在哪里打开)

    微信登录抖音权限怎么设置(微信登录抖音权限在哪里打开)

  • 微信接不到语音通话和视频是怎么回事(微信接不到语音电话是怎么回事)

    微信接不到语音通话和视频是怎么回事(微信接不到语音电话是怎么回事)

  • 苹果11可以微信分身吗(苹果11可以微信视频小界面吗)

    苹果11可以微信分身吗(苹果11可以微信视频小界面吗)

  • 手机淘宝猜你喜欢在哪里(手机淘宝猜你喜欢如何快速出现)

    手机淘宝猜你喜欢在哪里(手机淘宝猜你喜欢如何快速出现)

  • 钉钉oa怎么使用(钉钉里面的oa在哪里)

    钉钉oa怎么使用(钉钉里面的oa在哪里)

  • 苹果二代耳机上市时间(苹果二代耳机上面都是三行字么)

    苹果二代耳机上市时间(苹果二代耳机上面都是三行字么)

  • p30多少倍变焦(p30变焦倍数是30还是50)

    p30多少倍变焦(p30变焦倍数是30还是50)

  • iphone充电发烫(iphone充电发烫正常吗)

    iphone充电发烫(iphone充电发烫正常吗)

  • 电脑老是弹出广告彻底解决教程(电脑老是弹出广告怎么处理)

    电脑老是弹出广告彻底解决教程(电脑老是弹出广告怎么处理)

  • React中使用react-router-cache-route缓存页面状态(react-use)

    React中使用react-router-cache-route缓存页面状态(react-use)

  • 那些车不用交税
  • 甲乙公司与银行之间的往来如何记账
  • 政府补贴是否要交企业所得税
  • 电子税务局自然人如何注册
  • 股东入股的标准
  • 不开发票的入账怎么办?
  • 去年的费用票会计分录
  • 废旧物资增值税税收优惠政策
  • 劳务报酬所得怎么扣税
  • 期末留抵税额可以留多久
  • 企业计提长期借款的利息
  • 年薪制离职补偿金如何计算?
  • 工程公司安装中央空调能按混合销售计算增值税么?
  • 24个问题
  • 利润弥补以前年度亏损是税前吗
  • 交易性金融资产属于流动资产吗
  • 增值税普通发票有什么用
  • 应付账款少说明什么
  • 多交的增值税可以抵所得税吗?
  • 充积分送手机
  • 销售利润率的计算公式Excel
  • 出差补贴算工资薪金吗
  • 软件开发公司账务怎么做
  • 费用发票可以抵扣吗
  • amr文件下载
  • win7系统不可用怎么办
  • 公司与个人的往来款怎么处理
  • 增值税进项税抵扣销项税
  • 未开票的销售收入分录
  • PHP:session_register_shutdown()的用法_Session函数
  • tdxcef.exe进程
  • 固定资产入账流程图
  • laslajas大教堂
  • thinkphp设置伪静态
  • 增值税发票怎么抵税
  • 企业所得税按季还是按年
  • 高新技术企业收入占比不到60%,能否享受税收优惠政策
  • 文件上传漏洞原因
  • mit?
  • 二季度平均薪酬
  • mysql全局锁和表锁
  • 免征增值税的项目可以开专票吗
  • 公司借调员工
  • Servlet4.0 Response
  • mysql如何做优化
  • 企业亏损所得税处理
  • 上年亏损次年赢亏怎么算
  • 企业期末预收账款怎么算
  • 长期闲置机器设备评估方法
  • 暂估入库的库存商品转成本吗
  • 企业股权转让收入企业所得税
  • 租车费报销管理规定
  • 公司注册取消验资
  • 收到进项发票不认证抵扣的会计分录
  • 生产企业消防设施管理规定
  • 财务人员怎么查出发票虚开?
  • mysql查询两个表的数据
  • win8系统如何关机
  • guest怎么用
  • macos finder的应用程序列表在哪里
  • find linux命令详解
  • wincomp.exe - wincomp进程是什么意思
  • mac系统常见问题
  • win10桌面图标显示错误
  • powerremind.exe
  • win10升级失败怎么办
  • 使用Apache&花生壳架设Web服务器
  • linux备份的文件bak如何恢复
  • javascript中的3种继承实现方法
  • django项目中遇到的难点
  • 第一章初见第二章决定
  • bat批处理命令大全
  • node. js教程
  • 基于javascript的毕业设计
  • js回调函数应用场景
  • 广西税务局123
  • 税务非正常户转正常户的申请报告
  • 就业失业登记证网上申请
  • 贵阳市税务稽查
  • 抚顺交车辆购置税在哪交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设