珠海网站建设多少钱,甘肃省建设厅网站,电商运营培训正规平台,免费安全网站认证DOM
DOM文档对象模型 又称为DOM树 DOM树 由文档、元素、节点 组成文档#xff1a;一个页面就是一个文档#xff0c;元素#xff1a;文档中的所有标签都称为元素。DOM中使用Element表示节点#xff1a;文档中的所有内容#xff0c;在文档中都是节点#xff08;标签、属性…DOM
DOM文档对象模型 又称为DOM树 DOM树 由文档、元素、节点 组成文档一个页面就是一个文档元素文档中的所有标签都称为元素。DOM中使用Element表示节点文档中的所有内容在文档中都是节点标签、属性、文本注释等DOM中使用node表示获取元素
都以 document . 开头 例如document.getElementById
使用 console.dir 可以打印出返回的元素对象从而更好的查看属性和方法getElementById 元素ID)
获取标签为Id的元素 (文档中的id值是唯一的没有重复的id)参数id值区分大小写的字符串返回id属性值的元素节点相对应的对象2019-9-9 getElementsByTagName (标签名)
注意得到的是一个对象数组 如需操作元素则需要遍历伪数组 并且伪数组不能使用数组的方法以标签名来获取元素参数标签名返回的是一个对象数组 伪数组生僻字生僻字生僻字生僻字生僻字
注意getElementsByTagName()获取到是动态集合即当页面增加了标签这个集合中也就增加了元素。getElementsByCalssName (class类名)
以class类名获取元素参数 calss类名返回 对应类名的元素对象集合盒子1 盒子2 首页产品 querySelector 选择器
可以是任意的选择器 例如id、标签名、类名参数: 可以是 id 、类名、标签 选择器返回该模式匹配的第一个元素注意 : 需要在选择器前加符号 例如 .box 、 #nav。让querySelector 知道是什么选择器所以要加符号。 与前面介绍的不同盒子1 盒子2 首页产品 querySelectorAll 选择器
可以是任意的选择器 例如id、标签名、类名参数: 可以是 id 、类名、标签 选择器返回该模式匹配的所有元素对象集合伪数组 盒子1 盒子2 首页产品 获取特殊元素body、html)
获取body document.body获取html : document.documentElement获取元素之 节点获取
页面中所有的内容都为节点节点使用 node 来表示 DOM 树可以把节点划分为不同的层级关系常见的是父子兄层级关系
父级节点
node.parentNode //node表示节点parentNode //可以返回某个节点的父节点注意是最近一级的父节点如果指定的节点没有父节点则返回null× 子元素节点
parentNode.children (各个浏览器都支持) 不包含 元素节点文本节点等parentNode.firstElementChild (获取第一个元素节点) 具有兼容问题 ie9才支持parentNode.lastElementChild (获取最后一个子元素节点) 具有兼容问题 ie9才支持parentNode.children[0] (没有兼容性问题并且返回第一个子元素)我是li我是li我是li我是li
兄弟节点
node.nexElementSibling //返回当前元素下一个兄弟元素节点找不到则返回nullnode.previousElementSibling // 返回当前元素上一个兄弟节点找不到则返回null两种方法都有兼容性的问题IE9以上支持我是div 我是span
问解决兼容性问题
答自己封装一个兼容性的函数function getNextElementSibling(element) { var el element; while (el el.nextSibling) { if (el.nodeType 1) { return el; } } return null; }
事件处理 javaScript 程序中采用的是异步处理事件模型事件处理分三部分。
事件源 具体作用在哪 个元素或标签上事件类型 指的是 例如鼠标的点击双击经过键盘的按下的键处理程序 指的是 事件触发后浏览器调用对应的处理程序(以函数的形式也称为事件处理函数事件处理 注册事件 注册事件有三种方法
使用HTML标签属性注册例如 Vue的事件注册使用传统的DOM对象注册 (onclick) 具有唯一性注意:使用这种方式注册 一个事件源只能注册一个,如注册多个,后面的覆盖前面的注册事件使用 addEventListenertype,listener,useCapture的方法监听注册方式 (即可添加多个,也可以取消事件)type :事件类型 , 例如click、mouseover 注意这是里不需要带onlistener:事件处理函数事件发生时会调用该监听函数useCapture可选参数是一个布尔值默认是false 。(false为捕获阶段true为冒泡阶段)注意:addEventListener() 方法 不支持低版本的IE注册事件的三种方法 删除事件解绑事件 移除传统的注册方式DOM 对象的方法
div.onclicknull;移除监听事件的方式 使用匿名函数 无法移除
div.removeEventListener (type,listener,useCapture);1 2 3 鼠标事件 鼠标事件的执行顺序
mousedown-mouseup-click-mousedown-mouseup-click-dbclickclick 鼠标点击左键并释放时触发dbclick 双击鼠标左键时触发mousedown 按下鼠标按键时触发mouseup 释放鼠标按键时触发mouseover 当鼠标经过时触发 具有事件冒泡 mouseout 当鼠标离开时触发 具有事件冒泡 mouseenter 当鼠标经过时触发 不具有事件冒泡 mouseleave 当鼠标经过时触发 不具有事件冒泡 mousemove 当移动鼠标时触发contextmenu 禁止鼠标右键菜单selectstart 禁止鼠标选中文字只有在同一个元素上相继触发 mouseover 和 mouseup事件 才会触发 click 事件
只有触发再两次 click 事件,才会触发一次 dbclick 事件mouseenter与mouseove的区别mouseenter经常与mouseleave搭配使用//1.mouseenter 鼠标经过 不具有事件冒泡不会传递给son点击事件 禁止鼠标右键菜单//1.contextmenu 禁止鼠标右键菜单
documnet.addEventListener(“contextmenu”,function(e){
e.preventDefault(); // 阻止事件的默认跳转行为
})
禁止鼠标选中文字//2.selectstart 禁止鼠标选中文字
documnet.addEventListener(“selectstart”,function(e){
e.preventDefault(); //阻止事件的默认跳转行为
})
焦点事件blur 元素失去焦点时触发 不会冒泡 focus 元素获得焦点时触发 不会冒泡 键盘事件
一般键盘事件使用在 输入框的标签中当按下字符键的执行顺序 (按下字符键 触发三次事件)keydown keypress keyup 其中 keydown 和 keypress 在文件框发生变化之前触发,然后是keyup事件则是在文件框发生变化之后触发当按下非字符键的执行顺序 (按下非字符, 触发二次事件)keydown keyup 其中首先触发 keydown , 最后触发 keyup.注意keydown 和 keypress 在文本框里面特点先执行事件的处理程序 在将文字落入到文本框中, keyup 在文本框里面的特点先将文字落入到文本框中在执行事件的处理程序keydown 按下键盘上的任意键触发;按住不放,重复触发keypress按下键盘上的字符键触发;按住不放,重复触发,不识别功能键如 箭头,ctrl,shift 等keyup释放键盘上的键时触发e.keyCode当用户按下按键时获取按键 ASCII 编码e.key获取当用户按下按键时的名称滚动条事件 当出现滚动条时向下滚动页面时上面被隐藏掉的高度被称为页面被卷去的部分此时滚动条在滚动时会触发 scroll事件 element.addEventListener(“scroll”,(){ console.log(element.scrollTop) }) 表单事件 change事件 当表单的值 发生改变时触发 事件对象
在触发DOM上的某个事件时会产生一个事件对象event 这个对象中包含着所有与事件有关的信息。包括导致事件的元素、事件的类型以及其他与特定事件相关的信息。事件触发时系统会产生一个事件对象并且系统会以实参的形式传给事件处理函数在事件处理程序中声明一个形参用来接收事件参数。//1. 方法一 eventTarget.onclick function (event) { //这个event就是事件对象我们还喜欢的写成 e 或者 evt } // 2. 方法二 eventTarget.addEventListener(“click”, function (event) { //这个event就是事件对象我们还喜欢的写成 e 或者 evt/这个 }) //3.方法三 eventTarget.addEventListener(“click”, fn) function (event) { //这个event就是事件对象我们喜欢写成e或者evt }
事件对象的属性和方法
e.target返回 触发 事件的对象 标准e.srcElement 返回触发事件的对象 非标准 ie6-8e.type返回事件的类型 比如 click mouseover 不带 one.canceIBubble该属性阻止冒泡 非标准 ie6-8使用e.returnValue 该属性 阻止默认事件默认行为非标准 ie6-8使用 比如不让链接跳转e.preventDefault() 该方法阻止默认事件默认行为标准 比如不让链接跳转e.stopPropagation() 标准的阻止事件冒泡事件对象的 this 与 e.target 的区别
this 指向的是事件绑定的元素e.target 指向的是事件触发元素 别忘了e.通常情况下e.target 和 this 的指向是一致的注意有一种情况不同那就是在事件冒泡时父子元素有相同事件单击子元素父元素的事件处理函数也会被触发执行这时候 this 指向的是元素因为 this 使终指向的是事件绑定的元素 target 指向的是子元素 因为target使终指向的是事件触发的元素
123 abcabcabc
鼠标的事件对象
e.clientX 返回鼠标相对于浏览器窗口可视区的 X 坐标e.clientY 返回鼠标相对于浏览器窗口可视区的 Y 坐标e.pageX 返回鼠标相对于文档页面的 X 坐标 IE9 支持e.pageY 返回鼠标相对于文档页面的 Y 坐标 IE9 支持e.screenX 返回鼠标相对于电脑屏幕的 X 坐标e.screenY 返回鼠标相对于电脑屏幕的Y 坐标操作元素
修改元素内容Element.innerText只显示纯文本,去除html标签,同时去除了空格和换行Element.innerHTML显示指定的元素的全部内容,包括HTML标签,同时保留空格和换行 innerText 与 innerHTML的区别使用 innerText 获取内容 不识别 HTML 标签, 空格与换行使用 innerText 设置内容 不识别 HTML 标签使用 innerHTML 获取内容 识别 全部内容包括 HTML 标签 ,会保留空格和换行使用 innerHTML 设置内容 识别 可设置 HTML 标签属性的操作
this 指向的是事件函数的调用者
普通元素的属性操作innerText 、innerHTMLsrc 、hrefid 、alt 、title
表单元素的属性操作type 、value 、checked 、selected 、disabled获取属性的值元素对象.属性名
设置属性的值元素对象.属性名值按钮
样式属性操作 通过 js 修改元素大小,颜色,位置等模式
Element.style.样式 值 //行内样式操作 修改行内样式 权重较高 Element.className 类名 //类名样式操作 覆盖原先的类名Element.className //值为空或null 可使元素的类名置空
Element.classList.add (类名) // 添加类名操作 可添加多个 不会覆盖原有的类名Element.classList.remove(移除类名) // 移除类名操作 可移除多个类名Element.classList.toggle(切换类名) //切换类名 无则添加有则移除Element.calssList.contains(类名) //是否包含此类名 返回布尔值判断是否为存在calssName 是保留字,因此使用 calssName 来操作元素类名属性
取消 a 标签的默认跳转
方法一: 在处理程序内的最后 添加 return false ;方法二: 在 a标签中加 javascript:;自定义属性操作 为什么需要自定义属性用于在页面中存储数据而不用在数据库中存储
Element.属性 内置属性通 点的方式 获取元素属性Element.getAttribute(属性) 一般用于 自定义属性兼容性获取设置属性值
Element.属性 值 内置属性Element.setAttribute( 属性值 ) //一般用于自定义属性移除属性值
Element.removeAttribute(属性)只能获取以 data开头 的自定义属性
Element.dataset.index 或者 Element.dataset[index] ie11才支持使用 Element.dataset.属性 获得的是一个以 data- 开头的自定义属性集合设置H5 自定义属性 H5中规定 自定义属性要 以 data-开头做为属性名并且赋值。
在标签中设置div data-index1 /div使用 js设置 Element.setAttribute(data-index,2)节点操作 node 表示父级 child 表示子级
创建节点
document.createElement(标签)
动态创建元素 创建之后需要添加添加节点
node.appendchild(child ) //node表示父级 child表示子级
将节点添加到node表示的父节点的子节点列表的末尾类似数组的方法pushnode.insertBefore( child,指定节点的位置 )
将节点添加到node表示的父节点的指定子节点的前面类似于css里面的before伪元素删除节点 node.removeChild( child ) 方法 在父级节点删除一个子节点返回删除的节点
复制克隆节点
node.cloneNode() //返回调用 该方法的节点的一个副本也称为克隆节点/拷贝节点如果括号参数为空或者为 false则是浅拷贝即只克隆复制节点本身不克隆里面的子节点如果括号参数为true则是深度拷贝会复制节点本身以及里面所有的子节点DOM的核心总结 DOM操作我们主要针对于元素的操作。主要有创建添加删除改查。
创建元素的三种方式
document.write()Element.innerHTML 值document.createElement()innerHTML数组方式效率高添加
appendChild //在父节点的末尾添加节点insertBefore //可以指定子节点的添加位置删除
removeChild改
主要修改DOM元素的属性DOM元素的内容属性表单的值等。修改元素属性: src、href、title等修改元素的普通内容: innerHMTL、innerText修改表单元素value、type、disabled等修改元素的模式style、className查
DOM提供的APIgetElementByIdgetElementByTagName 古老用法不太推荐使用H5提供的新方法querySelector,querySelectorAll 提倡利用节点操作获取元素父parentNode)、子(children)、兄弟previousElementSibling、nextElementSibling) 提倡操作自定义属性
setAttribute: 设置自定义属性getAttribute获取自定义属性removeAttribute移除属性
文章转载自: http://www.morning.tpdg.cn.gov.cn.tpdg.cn http://www.morning.pumali.com.gov.cn.pumali.com http://www.morning.fqtdz.cn.gov.cn.fqtdz.cn http://www.morning.wkpfm.cn.gov.cn.wkpfm.cn http://www.morning.xqjh.cn.gov.cn.xqjh.cn http://www.morning.kqylg.cn.gov.cn.kqylg.cn http://www.morning.ffwrq.cn.gov.cn.ffwrq.cn http://www.morning.dcmnl.cn.gov.cn.dcmnl.cn http://www.morning.ckhyj.cn.gov.cn.ckhyj.cn http://www.morning.yfmlj.cn.gov.cn.yfmlj.cn http://www.morning.tsqrc.cn.gov.cn.tsqrc.cn http://www.morning.rwxnn.cn.gov.cn.rwxnn.cn http://www.morning.rrms.cn.gov.cn.rrms.cn http://www.morning.qxkjy.cn.gov.cn.qxkjy.cn http://www.morning.ldcrh.cn.gov.cn.ldcrh.cn http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn http://www.morning.fnzbx.cn.gov.cn.fnzbx.cn http://www.morning.pmrlt.cn.gov.cn.pmrlt.cn http://www.morning.ptslx.cn.gov.cn.ptslx.cn http://www.morning.fwkpp.cn.gov.cn.fwkpp.cn http://www.morning.mfjfh.cn.gov.cn.mfjfh.cn http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn http://www.morning.rnngz.cn.gov.cn.rnngz.cn http://www.morning.c7500.cn.gov.cn.c7500.cn http://www.morning.dxsyp.cn.gov.cn.dxsyp.cn http://www.morning.kjawz.cn.gov.cn.kjawz.cn http://www.morning.mkczm.cn.gov.cn.mkczm.cn http://www.morning.prsxj.cn.gov.cn.prsxj.cn http://www.morning.ttshf.cn.gov.cn.ttshf.cn http://www.morning.ybgpk.cn.gov.cn.ybgpk.cn http://www.morning.rnkq.cn.gov.cn.rnkq.cn http://www.morning.mzkn.cn.gov.cn.mzkn.cn http://www.morning.kbgzj.cn.gov.cn.kbgzj.cn http://www.morning.csxlm.cn.gov.cn.csxlm.cn http://www.morning.lveyue.com.gov.cn.lveyue.com http://www.morning.qtrlh.cn.gov.cn.qtrlh.cn http://www.morning.rqfnl.cn.gov.cn.rqfnl.cn http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn http://www.morning.cnlmp.cn.gov.cn.cnlmp.cn http://www.morning.fsbns.cn.gov.cn.fsbns.cn http://www.morning.hous-e.com.gov.cn.hous-e.com http://www.morning.wcgcm.cn.gov.cn.wcgcm.cn http://www.morning.ybgt.cn.gov.cn.ybgt.cn http://www.morning.tfwg.cn.gov.cn.tfwg.cn http://www.morning.kybpj.cn.gov.cn.kybpj.cn http://www.morning.wqpm.cn.gov.cn.wqpm.cn http://www.morning.hwycs.cn.gov.cn.hwycs.cn http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn http://www.morning.lbgsh.cn.gov.cn.lbgsh.cn http://www.morning.qlhwy.cn.gov.cn.qlhwy.cn http://www.morning.dqcpm.cn.gov.cn.dqcpm.cn http://www.morning.rjjjk.cn.gov.cn.rjjjk.cn http://www.morning.wnkqt.cn.gov.cn.wnkqt.cn http://www.morning.ldqrd.cn.gov.cn.ldqrd.cn http://www.morning.rdqzl.cn.gov.cn.rdqzl.cn http://www.morning.tymnr.cn.gov.cn.tymnr.cn http://www.morning.mjdbd.cn.gov.cn.mjdbd.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.ryxbz.cn.gov.cn.ryxbz.cn http://www.morning.qxljc.cn.gov.cn.qxljc.cn http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn http://www.morning.lyzwdt.com.gov.cn.lyzwdt.com http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn http://www.morning.mrfr.cn.gov.cn.mrfr.cn http://www.morning.xbrxk.cn.gov.cn.xbrxk.cn http://www.morning.mbdbe.cn.gov.cn.mbdbe.cn http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn http://www.morning.jjxxm.cn.gov.cn.jjxxm.cn http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn http://www.morning.syxmx.cn.gov.cn.syxmx.cn http://www.morning.wbysj.cn.gov.cn.wbysj.cn http://www.morning.gwzfj.cn.gov.cn.gwzfj.cn http://www.morning.gmplp.cn.gov.cn.gmplp.cn http://www.morning.ttdxn.cn.gov.cn.ttdxn.cn http://www.morning.lzqxb.cn.gov.cn.lzqxb.cn http://www.morning.zwpzy.cn.gov.cn.zwpzy.cn http://www.morning.rnnwd.cn.gov.cn.rnnwd.cn http://www.morning.fhtmp.cn.gov.cn.fhtmp.cn http://www.morning.xsetx.com.gov.cn.xsetx.com