这次给大家带来JS的Dom与事件小结,JS的Dom与事件小结注意事项有哪些,下面就是实战案例,一起来看一下。
dom对象的innerText和innerHTML有什么区别?
innerHTML指的是从对象的起始位置到终止位置的全部内容,包括Html标签。
innerText 指的是从起始位置到终止位置的内容,但它去除Html标签。
elem.children和elem.childNodes的区别?
Node(节点)是DOM层次结构中的任何类型的对象的通用名称,Node有很多类型,如元素节点,属性节点,文本节点,注释节点等。Element继承了Node类,也就是说Element是Node多种类型中的一种,即当NodeType为1时Node即为ElementNode,另外Element扩展了Node,Element拥有id、class、children等属性。children是Element的属性,childNodes是Node的属性。
查询元素有几种常见的方法?
常见的获取元素的方法有3种,分别是通过元素ID、通过标签名字和通过类名字来获取。
1.getElementById
DOM提供了一个名为getElementById的方法,这个方法将返回一个与之对应id属性的节点对象。
2.getElementsByTagName
该方法返回一个对象数组(准确的说是HTMLCollection集合,它不是真正意义上的数组),每个对象分别对应着文档里有着给定标签的一个元素。类似于getElementById,同样,该方法只提供一个参数,它的参数是指定标签的名字。
3.getElementsByClassName
除了通过指定标签获取元素外,DOM还提供了getElementsByClassName方法来获取指定class名的元素。
如何创建一个元素?如何给元素设置属性?
1.createElement(name)创建元素节点
createElement()是Document对象中的方法,该方法会根据指定的元素名称name,返回一个Element对象。
2.设置创建元素节点的属性
创建元素后,我们可能需要设置元素属性,如:给元素设置CSS样式、添加点击事件等。设置元素属性可以使用Element对象的setAttribute方法,也可以使用属性名设置。
3.将元素节点插入到DOM文档的指定位置
元素创建后,需要将元素节点插入到DOM文档的指定位置,添加元素使用Element对象的appendChild()方法或insertBefore()方法。appendChild()
方法的作用是向元素添加新的子节点,被添加的子节点将作为其最后一个子节点。insertBefore()方法的作用是在已有的节点之前插入新节点,被添加的节点会做为同级节点。
元素的添加、删除?
元素的添加:使用createElement来添加元素
元素的删除:如需删除 HTML 元素,您必须首先获得该元素的父元素,然后用removeChild来删除对应元素。
DOM0 事件和DOM2级在事件监听使用方式上有什么区别?
DOM0事件:DOM0事件是指直接将事件绑定在节点上,一个节点只能绑定一个事件,不然后面的灰覆盖前面的。
var oBtn = document.querySelctor('#btn');
oBtn.onclick=function(){
console.log('a')
};
DOM2事件:DOM2级事件可以对一个元素绑定多个事件,后面的事件不会覆盖前面事件;可以通过参数true、false来设置事件在冒泡阶段或者捕获阶段触发事件。使用removeEventListener来删除事件。
oBtn.addEventListener("click",function(){
});
oBtn.removeEventListener("click",fn,false);
attachEvent与addEventListener的区别?
1.addEventListener和attachEvent的兼容性问题
addEventListener是符合W3C规范的事件绑定方法,FireFox、Chrome、Safari都是用它来绑定事件。
attachEvent是IE私有的,不符合W3C规范,而且在IE下,只能使用它来绑定事件,addEventListener是无效的。
所以,要想绑定事件,必须处理兼容性问题。
2.addEventListener和attachEvent的语法规则
addEventListener共有3个参数:element.addEventListener(type,listener,useCapture)
attachEvent共有2个参数:element.attachEvent(type,listener);
3.代码兼容处理
function regEvent(ele, event_name, fun)
{
if (window.attachEvent)
ele.attachEvent(event_name, fun); //IE浏览器
else
{
event_name = event_name.replace(/^on/, “”); //如果on开头,删除on,如onclick->click
ele.addEventListener(event_name, fun, false); //非IE浏览器
}
}
解释IE事件冒泡和DOM2事件传播机制?
IE事件冒泡:事件发生在触发元素上,从触发元素开始,事件向父元素一级一级传递,直到html元素。
DOM2事件:事件传播分3个阶段,捕获阶段,处于事件目标阶段,冒泡阶段。事件监听程序只能选择在捕获阶段或者冒泡阶段其中的一个阶段执行。
捕获阶段:事件发生时,先从根节点开始传递,一级一级向下找,知道目标元素。
冒泡阶段:从触发元素开始,事件向父元素一级一级传递,直到html元素
如何阻止事件冒泡? 如何阻止默认事件?
阻止事件冒泡:w3c 的方法是 e.stopPropagation(),IE 则是使用 e.cancelBubble = true。
阻止默认事件:w3c 的方法是 e.preventDefault(),IE 则是使用 e.returnValue = false。
问答
有如下代码,要求当点击每一个元素li时控制台展示该元素的文本内容。不考虑兼容
<ul class="ct"> <li>这里是</li> <li>饥人谷</li> <li>前端6班</li> </ul> <script> //todo ... </script>
代码:
<ul class="ct"> <li>这里是</li> <li>饥人谷</li> <li>前端6班</li> </ul> <script> //方法一 /*var item = document.getElementsByClassName("ct")[0].getElementsByTagName('li') for(var i=0;i<item.length;i++){ item[i].addEventListener('click', function(){ console.log(this.innerText); }) } */ //方法二 var item = document.getElementsByTagName('li') for(var i=0;i<item.length;i++){ item[i].addEventListener('click', function(){ console.log(this.innerText); }) } </script>
补全代码,要求:
1.当点击按钮开头添加时在5a8028ccc7a7e27417bff9f05adf5932这里是bed06894275b65c1ab86501b08a632eb元素前添加一个新元素,内容为用户输入的非空字符串;当点击结尾添加时在25edfb22a4f469ecb59f1190150159c6前端6班bed06894275b65c1ab86501b08a632eb后添加用户输入的非空字符串.
2.当点击每一个元素li时控制台展示该元素的文本内容。
<ul class="ct"> <li>这里是</li> <li>555</li> <li>666</li> </ul> <input class="ipt-add-content" placeholder="添加内容"/> <button id="btn-add-start">开头添加</button> <button id="btn-add-end">结尾添加</button> <script> //todo ... </script>
代码:
<ul class="ct"> <li>这里是</li> <li>666</li> <li>555</li> </ul> <input class="ipt-add-content" placeholder="添加内容"/> <button id="btn-add-start">开头添加</button> <button id="btn-add-end">结尾添加</button>
<script>var ct = document.querySelector('.ct')var start = document.getElementById('btn-add-start');var end = document.getElementById('btn-add-end');var input = document.querySelector(".ipt-add-content"); end.addEventListener('click',function(){ var list = document.createElement('li'); list.innerText = input.value ct.appendChild(list); }) start.addEventListener('click',function(){ var list = document.createElement('li'); list.innerText = input.value ct.insertBefore(list,ct.firstChild); }) ct.addEventListener('click', function(e){ if(e.target.tagName.toLowerCase() === 'li'){ console.log(e.target.innerText); } }); </script>
补全代码,要求:当鼠标放置在li元素上,会在img-preview里展示当前li元素的data-img对应的图片。
<ul class="ct"> <li data-img="1.png">鼠标放置查看图片1</li> <li data-img="2.png">鼠标放置查看图片2</li> <li data-img="3.png">鼠标放置查看图片3</li> </ul> <div class="img-preview"></div> <script> //todo ... </script>
代码:
<ul class="ct"><li data-img="http://img5.imgtn.bdimg.com/it/u=3425851328,2681317699&fm=21&gp=0.jpg">鼠标放置查看图片1</li><li data-img="http://pic24.nipic.com/20121003/10754047_140022530392_2.jpg">鼠标放置查看图片2</li><li data-img="http://img2.3lian.com/img2007/4/22/303952037bk.jpg">鼠标放置查看图片3</li></ul><div class="img-preview"></div><script>var ct = document.querySelector('.ct')var list = document.getElementsByTagName('li')var preview = document.querySelector('.img-preview')for(var i=0;i<list.length;i++){list[i].addEventListener('mouseover',function(){if(document.querySelector('img')){preview.removeChild(document.querySelector('img'))console.log(1)}var item = document.createElement('img')var img = this.getAttribute('data-img')preview.appendChild(item)item.src=img; }) } </script>
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
相关阅读:
以上是JS的Dom与事件小结的详细内容。更多信息请关注PHP中文网其他相关文章!

一致的HTML编码风格很重要,因为它提高了代码的可读性、可维护性和效率。1)使用小写标签和属性,2)保持一致的缩进,3)选择并坚持使用单引号或双引号,4)避免在项目中混合使用不同风格,5)利用自动化工具如Prettier或ESLint来确保风格的一致性。

在Bootstrap4中实现多项目轮播的解决方案在Bootstrap4中实现多项目轮播并不是一件简单的事情。虽然Bootstrap...

如何实现鼠标滚动事件穿透效果?在我们浏览网页时,经常会遇到一些特别的交互设计。比如在deepseek官网上,�...

无法直接通过CSS修改HTML视频的默认播放控件样式。1.使用JavaScript创建自定义控件。2.通过CSS美化这些控件。3.考虑兼容性、用户体验和性能,使用库如Video.js或Plyr可简化过程。

在手机上使用原生select的潜在问题在开发移动端应用时,我们常常会遇到选择框的需求。通常情况下,开发者倾...

在手机上使用原生select的弊端是什么?在移动设备上开发应用时,选择合适的UI组件是非常重要的。许多开发者�...

使用Three.js和Octree优化房间内第三人称漫游的碰撞处理在Three.js中使用Octree实现房间内的第三人称漫游并添加碰�...

使用原生select在手机上的问题在移动设备上开发应用时,我们经常会遇到需要用户进行选择的场景。虽然原生sel...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver CS6
视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。