我的前端学习笔记20——DOM、事件

1,dom对象的innerText和innerHTML有什么区别?

  • innerText是将对象中的字符串过滤组合展示;而innerHTML则是将对象中的所有内容都进行展示;
我的前端学习笔记20——DOM、事件_第1张图片
  • 对于链接,innerHTML会将其保留连接属性,而innerText则会将链接转化为字符串;
我的前端学习笔记20——DOM、事件_第2张图片

2,elem.children和elem.childNodes的区别?

  • elem.children:非标准型,它返回指定元素的子元素集合。只返回HTML节点。

  • elem.childNodes:标准型,返回指定元素的子元素集合,包括HTML属性,所有属性,文本。可以通过nodeType来判断是那种类型的节点,当nodeType==1时时元素节点,2是属性节点,3是文本节点。

    
    
    
    
    
    

    段落二我是链接

    段落三

3,查询元素有几种常见的方法?

查询元素常见的方法

document节点获取

document.getElementById(' '):
返回匹配指定ID属性的元素节点.如果没有发现匹配的节点,则返回null。
document.getElementsByClassName(' '):
返回一个类似数组的对象(HTMLCollection类型的对象),包括了所有class名字符合指定条件的元素(搜索范围包括本身),元素的变化实时反映在返回结果中.这个方法不仅可以在document对象上调用,也可以在任何元素节点上调用;
document.getElementsByTagName(' '):
返回所有指定标签的元素(搜索范围包括本身).返回值是一个HTMLCollection对象,也就是说,搜索结果是一个动态集合,任何元素的变化都会实时反映在返回的集合中.这个方法不仅可以在document对象上调用,也可以在任何元素节点上调用;
document.querySelector(''):
返回匹配指定的CSS选择器的元素节点.如果有多个节点满足匹配条件,则返回第一个匹配的节点.如果没有发现匹配的节点,则返回null;
document.querySelectorAll():
返回匹配指定的CSS选择器的所有节点,返回的是NodeList类型的对象.NodeList对象不是动态集合,所以元素节点的变化无法实时反映在返回结果中;
document.getElementsByName():
方法用于选择拥有name属性的HTML元素,比如form、img、frame、embed和object,返回一个NodeList格式的对象,不会实时反映元素的变化。  
document.elementFromPoint(x, y):
elementFromPoint方法的参数x和y,分别是相对于当前窗口左上角的横坐标和纵坐标,单位是CSS像素。elementFromPoint方法返回位于这个位置的DOM元素,如果该元素不可返回(比如文本框的滚动条),则返回它的父元素(比如文本框)。如果坐标值无意义(比如负值),则返回nul

父元素节点获取:

parentNode
parentElement

兄弟节点获取:

nextSibling
previousSibling

通过子节点获取:

childNodes
firstChild
lastChild

4,如何创建一个元素?如何给元素设置属性?

创建元素:

创建元素

document.createElement(''):
createElement方法用来生成HTML元素节点。
document.createTextNode(''):
createTextNode方法用来生成文本节点,参数为所要生成的文本节点的内容。
document.DocumentFragment():
createDocumentFragment方法生成一个DocumentFragment对象。DocumentFragment对象是一个存在于内存的DOM片段,但是不
属于当前文档,常常用来生成较复杂的DOM结构,然后插入当前文档。这样做的好处在于,因为DocumentFragment不属于当前文档,
对它的任何改动,都不会引发网页的重新渲染,比直接修改当前文档的DOM有更好的性能表现。

属性操作:

getAttribute():getAttribute()用于获取元素的attribute值
createAttribute():createAttribute()方法生成一个新的属性对象节点,并返回它setAttribute():setAttribute()方法用于设置元素属性
removeAttribute():removeAttribute()用于删除元素属性

具体详见

5,元素的添加、删除?

appendChild():在元素末尾添加元素;
insertBefore():在某个元素前插入元素;
replaceChild():替换某个元素(要插入的元素,要替换的元素);
removeChild():删除元素;

举例:


段落一我是链接

  • IE事件冒泡:
    IE事件冒泡是事件由第一个被触发的元素接收,然后逐级向上传播。


    我的前端学习笔记20——DOM、事件_第3张图片
  • DOM2的事件传播机制:

DOM2事件传播,事件由最外层元素接收,然后逐层向内传播,这个过程为捕获阶段,当达到目标元素时,处于目标阶段,然后事件由目标元素向最外层开始传递,这个过程称之为冒泡阶段

我的前端学习笔记20——DOM、事件_第4张图片

捕获阶段:


我的前端学习笔记20——DOM、事件_第5张图片

9,如何阻止事件冒泡? 如何阻止默认事件?

我的前端学习笔记20——DOM、事件_第6张图片

常规浏览器:

  • 阻止事件冒泡:stopPropagation( )

    
    点我
    
    

当执行到a链接时,事件就会被阻止在a链接处,不会传到body上。

  • 阻止默认事件:preventDefault( )

    
    点我
    
    

当点击a链接时,由于a链接默认会跳转,e.preventDefault()阻止了a链接的跳转。

IE浏览器:

  • 阻止事件冒泡:

    
    点我
    
    
    
  • 阻止默认事件:

    
    点我
    
    

你可能感兴趣的:(我的前端学习笔记20——DOM、事件)