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()
    
}

原生js大总结七的更多相关文章

  1. 原生js大总结九

    81.ES6的Symbol的作用是什么?   ES6引入了一种新的原始数据类型Symbol,表示独一无二的值   82.ES6中字符串和数组新增了那些方法   字符串       1.字符串模板    ...

  2. 原生js大总结十

    91.ajax的优点     a.提高运行效率   b.提高用户体验,让多件事情同时发生   c.在不刷新页面的情况下可以对局部数据进行加载和刷新       92.ajax请求的流程   1.创建通 ...

  3. 原生js大总结二

    011.if语句的优化   1.把次数多的条件和执行结果放到最前面   2.减少第一次无用的判断,可以用嵌套判断   3.判断语句禁止出现三次嵌套     012.谈谈你对switch的理解   1. ...

  4. 原生js大总结十一

    101.请简述prototype.__proto__ constructor三者的关系   1.prototype:     每一个函数都有一个prototype这个属性,而这个属性指向一个对象,这个 ...

  5. 原生js大总结八

    071.如何组织事件冒泡   利用事件对象属性:stopPropagation 和 cancelBubble   stopPropagetion是一个方法:e.stopPropagetion();   ...

  6. 原生js大总结四

    031.数组常用的一些方法   1.push: 在数组最后添加一个或者多个元素,返回添加后数组的长度   2.pop: 从数组最后取出一个元素,返回的是数组的最后一个元素(取出的元素)   3.uns ...

  7. 原生js大总结五

    041.在js中如何用方法将10进制的字符转换成16进制和8进制   数字.toString(16) 数字.toString(8)     042.如何创建时间对象   new Date()   04 ...

  8. 原生js大总结三

    021.定义函数的几种方式   1.关键字函数:function fnName(){};   2.字面量函数:var fn = function(){};   3.构造函数:var fn = new ...

  9. 原生js大总结一

    001.浅谈堆和栈的理解?   js变量存储有栈存储和堆存储,基本数据类型的变量存储在栈中,引用数据类型的变量存储在堆中 引用类型数据的地址也存在栈中   当访问基础类型变量时,直接从栈中取值.当访问 ...

随机推荐

  1. openSUSE leap 42.3 添加HP Laserjet Pro M128fn打印机和驱动

    一.安装驱动 YaST控制中心->软件管理->搜索->hplip 安装hplip 如下图: HPLIP(Linux Imaging and Printing Object)以前有hp ...

  2. Linux下通过.desktop 文件创建桌面程序图标及文件编写方式(Desktop Entry文件概述)

    Linux下通过.desktop 文件创建桌面程序图标及文件编写方式 1.Desktop Entry文件概述:在 Windows 平台上,用户可以通过点击位于桌面或菜单上的快捷方式轻松打开目标应用程序 ...

  3. 客户端运行gpupdate /force,后提示原因是缺少到域控制器的网络连接

    问题: C:\Users\wb>gpupdate /force正在更新策略... 用户策略更新成功完成.无法成功更新计算机策略.遇到下列错误: 处理组策略失败,原因是缺少到域控制器的网络连接.这 ...

  4. 学习《人人都是产品经理2.0:写给泛产品经理》高清中文PDF+苏杰(作者)

    <人人都是产品经理2.0--写给泛产品经理>将从人开始,以人结束,中间说事,以一个产品从无到有的过程为框架--想清楚.做出来.推出去,外加一章综合案例.其中,最重要的想清楚.做出来.推出去 ...

  5. 把书《CUDA By Example an Introduction to General Purpose GPU Programming》读薄

    鉴于自己的毕设需要使用GPU CUDA这项技术,想找一本入门的教材,选择了Jason Sanders等所著的书<CUDA By Example an Introduction to Genera ...

  6. nginx下修改svn配置

    最近公司的SVN服务器地址做了变更,而我用的操作系统是Ubuntu操作系统,我也不想把以前下载的代码重新进行修改,我想通过修改svn地址,应该可以,终于在网上通过查找资料,找到了解决的方法:      ...

  7. Android中Service的一个Demo例子

    Android中Service的一个Demo例子  Service组件是Android系统重要的一部分,网上看了代码,很简单,但要想熟练使用还是需要Coding.  本文,主要贴代码,不对Servic ...

  8. BRep Shapes Based on Tessellated Geometry

    BRep Shapes Based on Tessellated Geometry eryar@163.com Key Words. BRep Shape, Tessellated Geometry, ...

  9. 关于命令行签名时.SF和.RSA文件的命名问题

    准备工作: 签名文件名称为android.keystore 签名的别名为123456789.keystore 1.使用签名命令后例如以下图 发现.SF和.RSA文件自己主动命名为12345678.SF ...

  10. 全面了解Linux下Proc文件系统

    全面了解Linux下Proc文件系统   Proc是一个虚拟文件系统,在Linux系统中它被挂载于/proc目录之上.Proc有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非 ...