位置: IT常识 - 正文

【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)(javascript bom dom)

编辑:rootadmin
【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)

推荐整理分享【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)(javascript bom dom),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascriptmdn,js domcontentloaded,js中dom的用法,javascript中dom的含义,js中dom的用法,js中dom的用法,javascriptmdn,javascript中dom的含义,内容如对您有帮助,希望把文章链接给更多的朋友!

🐚作者简介:苏凉(专注于网络爬虫,数据分析,正在学习前端的路上) 🐳博客主页:苏凉.py的博客 🌐系列总专栏:web前端基础教程 👑名言警句:海阔凭鱼跃,天高任鸟飞。 📰要是觉得博主文章写的不错的话,还望大家三连支持一下呀!!! 👉关注✨点赞👍收藏📂

文章目录每日推荐什么是DOM?节点(Node)查找节点什么是事件?事件绑定在html节点中绑定在js中绑定常见的html事件文档的加载给window绑定onload事件DOM查询innerHTML 属性获取元素节点案例一案例二每日推荐

给大家推荐一款神器。无论你是学生党还是上班族都可以使用,这里涵盖了面试题库,在线刷题,各个大厂的面试/笔试真题等。如果你还是学生,最重要的一点就是模拟面试功能,智能AI1v1面试,帮助你早日拿到大厂offer!点击链接即可直达!=>牛客网-找工作神器

什么是DOM?

JS中通过DOM来对HTML文档进行操作。只要理解了DOM就可以随心所欲的操作WEB页面。 DOM,全称Document Object Model文档对象模型。

文档 文档表示的就是整个的HTML网页文档对象对象 表示将网页中的每一个部分都转换为了一个对象。模型 使用模型来表示对象之间的关系,这样方便我们获取对象。 DOM中的模型如图所示,我们只需要知道某一个节点即可找到任意其他节点。 节点(Node)

节点,是构成我们网页的最基本的组成部分,网页中的每一个部分都可以称为是一个节点。比如: html标签、属性、文本、注释、整个文档等都是一个节点。虽然都是节点,但是实际上他们的具体类型是不同的。比如∶标签我们称为元素节点、属性称为属性节点、文本称为文本节点、文档称为文档节点。节点的类型不同,属性和方法也都不尽相同。

文档节点:整个HTML文档元素节点:HTML文档中的HTML标签属性节点:元素的属性文本节点:HTML标签中的文本内容 查找节点

浏览器已经为我们提供文档节点对象,这个对象是window属性可以在页面中直接使用,文档节点代表的是整个网页。即document。 例子:

给按钮一个id属性

<button id="bt1">按钮</button>

通过id查找按钮

document.getElementById('bt1');什么是事件?

事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。JavaScript 与HTML之间的交互是通过事件实现的。对于Web应用来说,有下面这些代表性的事件:

点击某个元素将鼠标移动至某个元素上方按下键盘上某个键,等等。事件绑定在html节点中绑定

我们可以在事件对应的属性中设置一些js代码,这样当事件被触发时,这些代码将会执行。

<button id="bt1" onclick="alert('点我干啥?')">按钮</button>【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)(javascript bom dom)

这种写法我们称为结构和行为据合,不方便维护,不推荐使用。

在js中绑定

可以为按钮的对应事件绑定处理函数的形式来响应事件这样当事件被触发时,其对应的函数将会被调用。

<button id="bt1">按钮</button>//通过文档对象查找按钮节点var bt = document.getElementById('bt1');//绑定单击事件bt.onclick = function(){ alert('点我干嘛?')}

效果: 单击按钮之后弹出警告框

常见的html事件事件说明onchangeHTML 元素改变ondblclick当用户双击HTML 元素onclick用户点击 HTML 元素onmouseover鼠标指针移动到指定的元素上时发生onmouseout用户从一个 HTML 元素上移开鼠标时发生onkeydown用户按下键盘按键onload浏览器已完成页面的加载

更多html事件请看此文档说明!

文档的加载

在上面的例子中将script标签写在按钮页面下部是为了让页面加载好之后在执行js代码。 浏览器在加载一个页面时,是按照自上向下的顺序加载的,读取到一行就运行一行,如果将script标签写到页面的上边,在代码执行时,页面还没有加载。因此就无法执行相应事件。

那么当我们想吧js代码写在上方时,又怎样来实现同样的效果呢?

给window绑定onload事件

onload事件会在整个页面加载完成后执行

该事件对应的响应函数将会在页面加载完成之后执行,这样可以确保我们的代码执行时所有的DOM对象已经加载完毕

实例:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> window.onload = function(){ var even = document.getElementById('bt1'); even.onclick = function(){ alert('点我干嘛??') } } </script></head><body> <button id="bt1">按钮</button></body></html>DOM查询innerHTML 属性获取元素内容最简单的方法是使用 innerHTML 属性。innerHTML属性可用于获取或替换 HTML 元素的内容。innerHTML属性可用于获取或改变任何 HTML 元素,包括 <html> 和 <body>。获取元素节点通过document对象调用getElementByld() 通过id属性获取一个元素节点对象getElementsByTagName() 使用该方法获取元素时返回的是一个类数组对象。 通过标签名获取一组元素节点对象getElementsByName() 使用该方法获取元素时返回的也是一个类数组对象。 通过name属性获取一组元素节点对象 注意:在获取input标签中的值时,因为没有结束标签,因此不能使用innerHTML来获取标签内容,需通过属性名来获取,即元素.属性名 例子:元素.id ,元素.name,元素.value 注意:class属性不能采用这种方式,读取class属性时需要使用元素.className案例一

实现效果:

源码:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> window.onload = function(){ //为id=bt1的按钮绑定事件调用函数 document.getElementById('bt1').onclick = function(){ //获取id为li1的节点 var li1 = document.getElementById('li1'); alert(li1.innerHTML); } //为id=bt2的按钮绑定事件调用函数 document.getElementById('bt2').onclick = function(){ //获取所有li var lis = document.getElementsByTagName('li'); for(var i = 0;i<lis.length;i++){ alert(lis[i].innerHTML) } } //为id=bt3的按钮绑定事件调用函数 document.getElementById('bt3').onclick = function(){ //获取name=gender的节点 var genders = document.getElementsByName('gender') for(var i = 0;i<genders.length;i++){ alert(genders[i].value) } } } </script> <style> .d1{ display: inline-block; margin-left: 100px; margin-top: 100px; background-color: lightblue; } .d1>ol>li{ display: inline-block; background-color: antiquewhite; } .d2{ display:inline-block; position:absolute; margin-left: 50px; margin-top: 100px; } .d2>button{ display: block; } </style></head><body> <div class="d1"> <p>端游列表</p> <ol> <li id="li1">英雄联盟</li> <li>QQ飞车</li> <li>魔兽争霸</li> <li>地下城</li> </ol> <p>手游列表</p> <ol> <li>原神</li> <li>王者荣耀</li> <li>qq飞车手游</li> </ol> <span>性别:</span> 男<input type="radio" name="gender" value="男"> 女<input type="radio" name="gender" value="女"> </div> <div class="d2"> <button id="bt1">获取id为li1的节点 </button> <button id="bt2">获取所有li</button> <button id="bt3">获取name=gender所有节点</button> </div></body></html>案例二

实现效果:

源码:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> var imgArr = ["../img/1.jpg" ,"../img/2.jpg" ,"../img/3.jpg" ,"../img/4.jpg" ,"../img/5.jpg"] var index = 0; window.onload = function(){ //给上一张按钮绑定单击事件 document.getElementById('bt1').onclick = function(){ //获取img节点 var img1 = document.getElementsByTagName('img')[0]; index --; if(index < 0){ index = imgArr.length-1; } img1.src = imgArr[index]; //获取p标签节点 var p = document.getElementById('info'); p.innerHTML = '总共'+imgArr.length+'张图片,当前第'+(index+1)+'张' } //给下一张按钮绑定单击事件 document.getElementById('bt2').onclick = function(){ //获取img节点 var img2 = document.getElementsByTagName('img')[0]; index ++; if(index > imgArr.length-1){ index = 0; } img2.src = imgArr[index]; //获取p标签节点 var p = document.getElementById('info'); p.innerHTML = '总共'+imgArr.length+'张图片,当前第'+(index+1)+'张' } } </script> <style> *{ margin: 0%; padding: 0%; } #d1{ padding: 10px; margin: 50px auto; width: 500px; background-color: wheat; text-align: center; } img{ width: 500px; height: 300px; } </style></head><body> <div id="d1"> <p id="info">总共5张图片,当前第1张</p> <img src="../img/1.jpg" alt="原神图片"> <button id="bt1">上一张</button> <button id="bt2">下一张</button> </div></body></html>

这里我们实现了dom查询的一个小案例,下期继续更新DOM查询,欢迎订阅本专栏,持续更新中…

更多题库和知识点总结,面试技巧请看=>牛客网,快来和我一起刷题吧!

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

上一篇:Vue父子组件生命周期执行顺序是什么?(vue父子组件生命周期钩子执行顺序)

下一篇:这年头还不来尝试线稿图视频??(这年头不好混图片)

  • vivos9支持的5G频率有哪些(vivos9支持几个5g频段)

    vivos9支持的5G频率有哪些(vivos9支持几个5g频段)

  • 抖音3分钟视频怎么发呢(抖音3分钟视频怎么发朋友圈)

    抖音3分钟视频怎么发呢(抖音3分钟视频怎么发朋友圈)

  • 荣耀30pro如何分辨用的哪个sim卡流量(荣耀30怎么分)

    荣耀30pro如何分辨用的哪个sim卡流量(荣耀30怎么分)

  • 华为nova5有没有永不熄屏(华为nova5有没有智能遥控功能)

    华为nova5有没有永不熄屏(华为nova5有没有智能遥控功能)

  • 如何关闭青少年模式(如何关闭青少年模式华为)

    如何关闭青少年模式(如何关闭青少年模式华为)

  • qq找回密码过于频繁(找回qq密码操作过于频繁是怎么回事)

    qq找回密码过于频繁(找回qq密码操作过于频繁是怎么回事)

  • 6g和8g运行有什么区别(6g和8g运行有什么区别平板)

    6g和8g运行有什么区别(6g和8g运行有什么区别平板)

  • 查别人qq里的好友(查别人qq里的好友的软件)

    查别人qq里的好友(查别人qq里的好友的软件)

  • 三星s10美版信号稳定吗(三星s10美版信号不好怎么办)

    三星s10美版信号稳定吗(三星s10美版信号不好怎么办)

  • 荣耀play指纹设置不见了(荣耀play指纹设置在哪)

    荣耀play指纹设置不见了(荣耀play指纹设置在哪)

  • ug10.0安装后打不开(ug10.0安装后打不开-68)

    ug10.0安装后打不开(ug10.0安装后打不开-68)

  • 苹果数据线更换条件(苹果数据线更换过吗)

    苹果数据线更换条件(苹果数据线更换过吗)

  • 表格中计算公式怎么做(表格中计算公式如何自动计算出结果)

    表格中计算公式怎么做(表格中计算公式如何自动计算出结果)

  • 赛扬t3500可以升级到什么cpu(赛扬t3000升级最高)

    赛扬t3500可以升级到什么cpu(赛扬t3000升级最高)

  • 红米k20尺寸(红米k20尺寸图)

    红米k20尺寸(红米k20尺寸图)

  • airpods一二代有什么区别(airpods 一二代)

    airpods一二代有什么区别(airpods 一二代)

  • office2019必须装在c盘吗(安装office2019需要卸载office2007吗)

    office2019必须装在c盘吗(安装office2019需要卸载office2007吗)

  • ipad2018支持鼠标吗(ipad2020支持鼠标吗)

    ipad2018支持鼠标吗(ipad2020支持鼠标吗)

  • 华为重启密码是几位数(华为重启密码是锁屏密码吗)

    华为重启密码是几位数(华为重启密码是锁屏密码吗)

  • 芒果tv怎么停止自动续费(芒果tv怎么停止续费vip微信)

    芒果tv怎么停止自动续费(芒果tv怎么停止续费vip微信)

  • 联想电脑怎么重装系统(联想电脑怎么重置系统还原)

    联想电脑怎么重装系统(联想电脑怎么重置系统还原)

  • 油表怎么看没油(宝马车油表怎么看没油)

    油表怎么看没油(宝马车油表怎么看没油)

  • 手机热点咨询怎么删除(手机热点咨询怎么删)

    手机热点咨询怎么删除(手机热点咨询怎么删)

  • wh900n可以用充电头吗(h900n用什么充电)

    wh900n可以用充电头吗(h900n用什么充电)

  • 荣耀frd一al10是什么型号(荣耀FRD一AL10是什么型号)

    荣耀frd一al10是什么型号(荣耀FRD一AL10是什么型号)

  • 【VUE3】ElementUI--el-date-picker下拉控件样式修改(高亮显示设置)(vue3 element-plus)

    【VUE3】ElementUI--el-date-picker下拉控件样式修改(高亮显示设置)(vue3 element-plus)

  • 全面理解JSX(全面理解健康教案)

    全面理解JSX(全面理解健康教案)

  • 怎么知道交不交印花税
  • 房地产企业什么时候开具正式发票
  • 公司没有账目违法吗
  • 未开票收入以后必须开票吗
  • 电子发票有使用期限吗
  • 企业所得税发票税前扣除异常
  • 小微企业城建税优惠政策2022
  • 一般纳税人计提水利基金会计分录
  • 工程预付款是否监管
  • 存货跌价准备转回的条件有哪些
  • 原材料计划价实际价区别
  • 维修房产用的建材会计分录
  • 收到供应商发票的会计处理怎么做?
  • 软件生产企业
  • 小规模纳税人可以抵扣进项税吗
  • 金税盘是固定资产还是无形资产
  • 如何理解“占应纳税额10%以上”?
  • 处置打包债权如何缴纳个人所得税?
  • 出差餐费报销怎么报销
  • 双软企业两免三减半企业所得税优惠政策
  • 工商年报需要什么数据
  • 合同取得成本和增量成本有什么区别
  • 跨年怎么冲销发票
  • 桌面图标删不掉怎么回事
  • 项目投资总额是什么
  • 挂证不付工资只代缴社保账务处理
  • 公司现金用途
  • 企业向银行申请办理非原路的服务贸易退汇,银行应当
  • 房地产预售收入如何缴纳所得税
  • php curl_exec
  • react connect用法
  • 定额材料损耗的计算公式
  • grad_cam
  • uniapp微信小程序广告
  • php判断字符串是否包含字母
  • 每个月计提折旧的分录
  • 小程序渲染是什么意思
  • phpcms怎么用
  • 深入理解jvm第三版pdf百度云
  • 融资租赁手续费一次性还是摊销
  • 结转制造费用金额
  • 应收账款占比是什么
  • 固定资产清理的借贷方向
  • 期权费的合理范围计算
  • 收据和发票有什么用
  • 投资收益账户属于所有者权益类吗
  • 账务核对包括哪些内容
  • 无形资产摊销账面价值
  • 多提税金的具体分录
  • 承兑汇票兑现账户是什么
  • 申报财产租赁合同怎么写
  • 高新技术企业的税收优惠政策
  • 红冲上一年度销售收入
  • 主营业务成本的贷方是什么
  • 企业产值什么意思
  • 商业银行存款业务规则
  • 创建的sql语句
  • linux 删除重复文件
  • win8安全模式黑屏
  • ubuntu怎么设置
  • win101909玩dnf怎么样
  • 从哪里看windows是多少位的
  • 如何在windows上打开蓝牙
  • linux系统服务器怎么进入桌面
  • linux dhcpv6
  • Win10预览版镜像
  • linux给文件赋全部权限
  • android开发环境搭建实验报告总结
  • cocos2dx框架
  • eclipse的android配置
  • python如何将矩阵转为图像
  • unity 3d教程
  • 使用ngView配合AngularJS应用实现动画效果的方法
  • html加载条代码
  • 安阳市灵活就业人员社保补贴
  • 12366纳税服务热线
  • 如何在电子税务局变更财务负责人
  • 五联发票每一联的作用
  • 竣工开始缴房产税吗
  • 下列哪些表述是正确的( )
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设