本篇文章是前端基础练习题第二十五天的答案及解析部分,纯题目部分请移步前端基础练习题 第25天
正文
1.假设HTML
为
1 | <div id="d1">hello world</div> |
1 | var div1 = document.getElementById('id'); |
div1.nodeValue
= ___________,div1.firstChild.nodeValue
= ___________。文本节点具有nodeValue
属性,而元素节点没有。
2.利用
JS
在<head>
标签中添加一张样式表,样式表如下所示:1 | <style media="screen"> |
如下方两种方式所示:
1 | // 方法1 |
3.
1 | <div onClick="console.log(2)"> |
若修改为
1 | <div id="outer"> |
1 | document.querySelcector("#inner").addEventListener('click', () => { console.log(1); }, true); |
JS事件流的执行顺序默认为冒泡执行,即按照由里即外的顺序执行。而如果使用addEventListener
,且将第三个参数设置为true
,则会采用捕获执行,即自上而下的顺序执行。
4.试简述什么叫做事件代理机制。
事件代理是指把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件。这样做的好处是只要定义一个监听函数,就能处理多个子节点的事件,如果希望阻止事件传播,可用event.stopPropagation()
方法,也可使用event.cancelBubble = true
来取消冒泡。
5.如何取消浏览器对当前事件的默认行为?如取消点击链接的默认跳转。
6.在某个
input
框上绑定如下所示的三个事件1 | input.onkeydown = () => { |
input
框里执行一次粘贴操作(按下Ctrl + C
键),在控制台会依次输出____________;在该input
框里输入一个字母,则在控制台会依次输出____。键盘事件的执行顺序为按下按键(keydown
) -> 按住按键(keypress
) -> 松开按键(keyup
),且keypress
事件会覆盖掉keydown
事件,注意keypress
事件是不会监听功能键的(如Ctrl
、Alt
、Shift
、Fn
键等)。
7.为什么说尽量要把
script
标签放在页面底部?浏览器是从上至下解析的,当发现<script>
元素时,会将网页渲染的控制权转交给JavaScript
引擎。若脚本加载时间很长,那就会造成网页长时间失去响应,浏览器会呈现“假死”状态,被称之为“阻塞效应”。将脚本放在底部,能保证页面至少可以访问,增强了用户体验,并且此时DOM
结构已生成,也可以放心的进行DOM
操作。
说明
题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
答案中,若有错误和需完善的地方,可在下方留言反馈哈~~
查看纯习题版,请点击前端基础练习题 第25天