前端面试题部分摘要

事件委托的原理,和实现方式,为什么用事件委托
事件委托(事件代理)原理:简单的说就是将事件交由别人来执行,就是将子元素的事件通过冒泡的形式交由父元素来执行。
在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能,因为需要不断的与dom节点进行交互,访问dom的次数越多,引起浏览器重绘与重排的次数也就越多,就会延长整个页面的交互就绪时间
Js跳转页面的方式
window.location.href方式 window.location.href=“http://www.dayanmei.com/”;
window.navigate方式跳转 window.navigate(“top.jsp”);
window.loction.replace方式实现页面跳转,注意跟第一种方式的区别
window.location.replace(“http://www.dayanmei.com”);
window.history.back(-1);

Js刷新页面的方式
reload 方法,该方法强迫浏览器刷新当前页面。
语法:location.reload([bForceGet])
replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当 使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。
语法: location.replace(URL)
location.replace(document.referrer);
document.referrer //前一个页面的URL
不要用 history.go(-1),或 history.back();来返回并刷新页面,这两种方法不会刷新页面。
自动刷新页面的方法:
1.页面自动刷新:把如下代码加入区域中

其中20指每隔20秒刷新一次页面.
2.页面自动跳转:把如下代码加入区域中

其中20指隔20秒后跳转到//www.jb51.net页面

Open和close使用的注意事项
方法open()和close()分别用于打开和关闭网页的输出流。如果是在页面加载期间使用write() 或writeln()方法,则不需要用到这两个方法。
Location里面你知道的值有哪些
·window.location.href 返回当前页面的 href (URL)
·window.location.hostname 返回 web 主机的域名
·window.location.pathname 返回当前页面的路径或文件名
·window.location.protocol 返回使用的 web 协议(http: 或 https:)
·window.location.assign 加载新文档
局部变量和全局变量有什么区别。
全局变量:在函数外面声明的变量(所有函数都可以调用)
局部变量:在函数内容声明的变量(只能在声明的函数内部使用)
什么叫做作用域,作用域链
作用域分为全局作用域和局部作用域
全局作用域:
最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问
局部作用域:
和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,而对于函数外部是无法访问的,最常见的例如函数内部
作用域链
全局作用域和局部作用域中变量的访问权限,其实是由作用域链决定的。
作用域有上下级关系,上下级关系的确定就看函数在哪个作用域下创建的,当代码在一个环境中执行,会创建变量对象的一个作用域链。当访问变量时,会一级一级向上寻找变量定义,直到找到他。若一直寻找到全局作用域还找不到就会报 'xxx is not defined’的错误。
作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问

=区别
·=是赋值的意思,是让左边的值等于右边的值,比如:var a=1;那么现在alert(a)就是1,当然右边可以是变量,如:var a=1; var b也是1;

·是判断等于的意思,返回的是一个布尔值,如:alert(11);将返回true,因为1等于1,如果 alert(1==‘1’);也返回true,虽说后面的1是字符串类型,但是是不判断类型的,所以还是true,如果:alert(1’2’)就是false了,因为1不等于2;
·=也是判断的,但是它要比判断的严谨一点,它的判断必须什么都相等,比如说类型,值;如: alert(1=1);将返回true,因为它们都是1,而且都是数字类型,如果:alert(1=‘1’);将返回false,因为前面的1是数字类型,后面的1是字符串类型。

怎样添加、移除、移动、复制、创建和查找节点
(bai1)创建新节点

createDocumentFragment() //创建一个DOM片段

createElement() //创建一个具体的du元素

createTextNode() //创建一个文本节点zhi

(2)添加、移除dao、替换、插入

appendChild()

removeChild()

replaceChild()

insertBefore()

(3)查找

getElementsByTagName() //通过标签名称

getElementsByName() //通过元素的Name属性的值

getElementById() //通过元素Id,唯一性

1、创建元素节点
document.createElement() 方法 用于创建元素,接受一个参数,即要创建元素的标签名,返回创建的元素节点

(1)var div = document.createElement(“div”); //创建一个div元素
(2)div.id = “myDiv”; //设置div的id
(3)div.className = “box”; //设置div的class

创建元素后还要把元素添加到文档树中

2、添加元素节点
appendChild() 方法 用于向childNodes列表的末尾添加一个节点,返回要添加的元素节点

(1)var ul = document.getElementByIdx(“myList”); //获得ul
(2)var li = document.createElement(“li”); //创建li
(3) li.innerHTML = “项目四”; //向li内添加文本
(4)ul.appendChild(li); //把li 添加到ul子节点的末尾

appendChild() 方法还可以添加已经存在的元素,会将元素从原来的位置移到新的位置

(1)var ul = document.getElementById(“myList”); //获得ul
(2)ul.appendChild(ul.firstChild); //把ul的第一个元素节点移到ul子节点的末尾

insertBefore() 方法,如果不是在末尾插入节点,而是想放在特定的位置上,用这个方法,该方法接受2个参数,第一个是要插入的节点,第二个是参照节点,返回要添加的元素节点

(1)var ul = document.getElementById(“myList”); //获得ul
(2)var li = document.createElement(“li”); //创建li
(3)li.innerHTML= “项目四”; //向li内添加文本
(4)ul.insertBefore(li,ul.firstChild); //把li添加到ul的第一个子节点前

(1)var ul = document.getElementById(“myList”); //获得ul
(2)var li = document.createElement(“li”); //创建li
(3)li.innerHTML= “项目四”; //向li内添加文本
(4)ul.insertBefore(li,ul.lastChild); //把li添加到ul的最后一个子节点(包括文本节点)之前

(1)var ul = document.getElementById(“myList”); //获得ul
(2)var li = document.createElement(“li”); //创建li
(3)li.innerHTML= “项目四”; //向li内添加文本
(4)var lis = ul.getElementsByTagName(“li”) //获取ul中所有li的集合
(5)ul.insertBefore(li,lis[1]);     //把li添加到ul中的第二个li节点前

添加后:

3、移除元素节点
removeChild() 方法,用于移除节点,接受一个参数,即要移除的节点,返回被移除的节点,注意被移除的节点仍然在文档中,不过文档中已没有其位置了

(1)var ul = document.getElementById(“myList”); //获得ul
(2)var fromFirstChild = ul.removeChild(ul.firstChild); //移除ul第一个子节点

(1)var ul = document.getElementById(“myList”); //获得ul
(2)var lis = ul.getElementsByTagName(“li”) //获取ul中所有li的集合
(3)ul.removeChild(lis[0]);       //移除第一个li,与上面不同,要考虑浏览器之间的差异

4、替换元素节点
replaceChild() 方法,用于替换节点,接受两个参数,第一参数是要插入的节点,第二个是要替换的节点,返回被替换的节点

(1)var ul = document.getElementById(“myList”); //获得ul
(2)var fromFirstChild = ul.replaceChild(ul.firstChild); //替换ul第一个子节点

(1)var ul = document.getElementById(“myList”); //获得ul;
(2)var li = document.createElement(“li”); //创建li
(3)li.innerHTML= “项目四”; //向li内添加文本
(4)var lis = ul.getElementsByTagName(“li”) //获取ul中所有li的集合
(5)var returnNode = ul.replaceChild(li,lis[1]); //用创建的li替换原来的第二个li

5、复制节点
cloneNode() 方法,用于复制节点, 接受一个布尔值参数, true 表示深复制(复制节点及其所有子节点), false 表示浅复制(复制节点本身,不复制子节点)

(1)var ul = document.getElementById(“myList”); //获得ul
(2)var deepList = ul.cloneNode(true); //深复制
(3)var shallowList = ul.cloneNode(false); //浅复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值