(1)在DOM中操作中怎么创建、添加、删除、移除、替换、插入和查找节点
①通过以下代码创建节点
createDocumentFragment()//创建一个DOM片段
createElement();//创建一个具体的元素
createTextNode();//创建一个文本节点
②添加、移除、替换、插入节点
appendChild();
removeChild();
replaceChild();
insertBefore();
③通过以下方式查找节点
getElementById();
getElementsByTagName();
getElementsByName();
(2)在JS中如何使用DOM
DOM代表文档对象,并且负责文档中各种对象的相互交互,DOM是开发网页所必须的,其中包括段落、链接等对象。可以操作这些对象,如添加或删除等。DOM还需要向网页添加额外的功能。
(3)IE和DOM事件流的区别是什么?
(4)编写一个JS函数,如果输入指定类型的选择器(仅须支持id,class,tagName三种简单的CSS选择器,无序兼容组合选择器)就可以返回匹配的DOM节点,要考虑浏览器的兼容性。
var query = typeof document.querySelectorAll ==="function"?
//如果支持HTML5用HTML5的选择器的方法
function(selector){
return Array.prototype.slice.call(document.querySelectorAll(selector))
}:
function(selector){
var reg=/^(#)?(\.)?(\w+)$/;
var matches = reg.exec(selector);
var result = [];
if(matches[1]){
result.push(document.getElementById(matches[3]));
}else if(matches[2]){
//类选择器
var allDoms = document.getElementsByTagName("*");
for(var i=0,len=allDoms.length;i
(5)什么是DOM?DOM分为哪几种?
DOM是文档对象模型,DOM是W3C的标准。DOM定义了访问HTML和XML文档的标准,即独立于平台和语言的接口。
W3C DOM标准分为以下三个标准
(6)列举几种类型的DOM节点
(7)什么是事件代理(事件委托)?
事件代理(事件委托),是JavaScript中绑定事件的常用技巧。顾名思义,“事件代理”,就是把原本需要绑定的事件委托给父元素,让父元素负责事件监听。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处是能提高性能。
事件委托的好处:
(8)什么是事件流?
事件流是指从页面接收事件的顺序。也就是说,当一个事件发生时,这个事件的传播过程就是事件流。
(9)什么是事件冒泡?
IE中的事件流就叫做事件冒泡。事件冒泡是由事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点。对于HTML来说当以一个元素产生一个事件时,它会把这个事件传递给它的父元素,父元素接收到之后,还要传递给它上一级的元素,就这样一直传播到document对象。
事件冒泡机制?
当一个对象上触发了某种事件,此对象定义了此事件的处理程序,那么就会调用这个处理程序;如果没有定义处理程序或者事件返回true,那么这个事件会向父级对象传播,从里到外,直到它被处理,或者到达对象层次的最顶层
如何阻止冒泡?
阻止冒泡的方法。包括兼容低版本的IE和标准浏览器
function stopBubble(e){
var event = e ||window.event;
event.stopPropagation ? event.stopPropagation():(event.cancelBubble = true);
}
(10)什么是事件捕获
事件捕获就是值不太具体的元素更早的接收到事件,而最具体的节点最后接收到事件。它们的用意就是在事件达到目标之前就捕获它,过程与冒泡相反。
(11)以下代码输出结果?为什么?
(function(){
console.log(1);
setTimeout(function(){console.log(2)},1000);
setTimeout(function(){console.log(3)},0);
console.log(4);
})()
输出结果:1,4,3,2
分析:1 4在前面,因为是简单的调用了console.log()没有延迟输出。
2 3都在事件里,浏览器有一个事件循环,它会检查事件队列和处理为完成的事件。
(12)事件的分类有哪些?
鼠标事件、键盘事件、表单事件、窗口事件、触屏事件、剪贴板事件、打印事件、多媒体事件、CSS3(动画、过渡等)事件、其他事件。