061、如何获取父级节点、上一个子级节点、下一个子级节点

 

 nextElementSibling  后一个兄弟元素  (如果没有是null)

 

 previousElementSibling  前一个兄弟元素  (如果没有就是null)

 

 parentNode 获取当前节点的父节点

 

062、元素节点的创建、添加、删除、替换、克隆

 

1、创建:document.createElement('元素名');

  

2、添加:appendChild()====>插入到最后       insertBefore()====>插入到最前面    

  用法:

          function append(obj,newEle){

              var achildren = obj.children;

              if(achildren.length>=1){

                return  obj.insertBefore(newEle,achildren[0])

               } else{

                return   obj.appendChild(newEle)

               }

          }

3、删除:box.removeChild(node) 从元素中移除某个子元素

  用法:  先找到父级节点然后在去删除子级节点

 

4、替换:box.replaceChild(子元素,父元素)

 

  用法:

      父元素.replaceChild(被替换成的元素,替换元素)

 

5、克隆:clone()

     元素.clone();

     如果里面传true的话会吧整个标签的所有节点都克隆,如果没有加true,只会克隆当前元素

 

 

063、浅谈关于文档碎片的理解

 

1、js操作dom时发生了什么?

     

   每次对dom的操作都会触发"重排",这严重影响到能耗,一般通常采取的做法是尽可能的减少dom操作来减少"重排"

 

2、什么是文档碎片?

  

    document.createDocumentFragment()

    一个容器,用于暂时存放创建的dom元素

    (其实这个跟咱们上课说那个先让到一个元素中,然后最后appendchild一样)

     

3、文档碎片有什么用?

  

   将需要添加的大量元素  先添加到文档碎片  中,再将文档碎片添加到需要插入的位置,大大减少dom操作,提高性能

 

064什么是回流和重绘

 

当渲染树中的一部分或者全部因为元素的尺寸、布局、隐藏等改变而需要重新构建的时候,这时候就会发生回流。

 

每个页面都至少发生一次回流,也就是页面第一次加载的时候。

 

在回流的时候,浏览器会使渲染树中受到影响的元素部分失效,并重新绘制这个部分的渲染树,完成回流以后,浏览器会重新绘制受到影响的部分元素到屏幕中,这个过程就是重绘

 

 

什么时候会发生回流?

     1、添加或者删除可见的DOM元素的时候

 

     2、元素的位置发生改变

 

     3、元素尺寸改变

 

     4、内容改变

 

     5、页面第一次渲染的时候

 

065、关于offsetX、offsetY、clientX、clientY、pageX、pageY、screenX、screenY的区别

 

 

offsetX、offsetY:

     鼠标相对于事件源元素(srcElement)的X,Y坐标

 

clientX、clientY:

     鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。

 

pageX、pagey:

     类似于event.clientX、event.clientY,但它们使用的是文档坐标而非窗口坐标。这2个属性不是标准属性,但得到了广泛支持。IE事件中没有这2个属性

 

screenX、screenY:

     鼠标相对于用户显示器屏幕左上角的X,Y坐标。

 

 

 

066、如何在当前视窗的可见范围看见当前元素

 

scrollIntoView()

 

067、关于onkeydown和onkeypress的区别以及如何获取按下键盘的键盘码?

 

onkeydown:

            1、所有的英文字符都是大写

            2、功能键也会被识别

onkeypress

            1、所有英文字符大小写都支持

            2、所有功能键都不会被识别

            3、组合键ctrl+回车的code值是10

 

 

e.keyCode || e.which

 

068、什么是事件流? 什么是事件冒泡? 什么是事件捕获?

 

什么是事件流?

 

     当一个HTML元素产生一个事件时,该事件会在元素节点与根节点之间的路径传播,路径所经过的节点都会收到该事件,这个传播的过程叫做DOM事件流

 

元素触发事件时,事件的传播过程称为事件流,过程分为捕获和冒泡两种

 

冒泡事件:微软提出的   事件由子元素传递到父元素的过程,叫做冒泡

 

捕获事件:网景提出的   事件由父元素到子元素传递的过程,叫做事件捕获

 

069、什么是浏览器默认行为?如何组织浏览器默认行为?

 

例如:右键菜单  点击超链接跳转  图片拖拽

 

组织默认行为

 

     return false  

    

     preventDefault是一个方法:e.preventDefault();

    

     returnValue的值是一个常量:e.returnValue = false;

 

070、如何组织右键菜单?

 

document.oncontextmenu = function(e){

 

     e.preventDefault()

    

}