HTML5默认气泡修改演示

HTML5默认气泡修改演示

这一节说的不是很清楚,麻烦老师详细讲解。

1.

 form.addEventListener("invalid", function(event) {

            event.preventDefault();

        }, true);

阻止原有气泡 preventDefault() 方法阻止元素发生默认的行为。event.preventDefault()中的event能否忽略不写?

function(event)里的event可以不写吗?event代表什么?event可以用e代替或者忽略不写吗?

2.addEventListener默认是false,改为true有什么意义?修改为true和false有什么变化?查看资料说

true - 事件句柄在捕获阶段执行,false- false- 默认。事件句柄在冒泡阶段执行。在这里代码有什么意义?

3.errorMessage = form.querySelectorAll(".error-message") 这里的error-message的类从哪里来的?没有发现class=error-message

4.for (var i = 0; i < errorMessage.length; i++) {

                errorMessage[i].parentNode.removeChild(errorMessage[i]);

  errorMessage[i].parentNode是errorMessage[i]的父节点的意思吗?

 errorMessage[i].parentNode.removeChild(errorMessage[i]); 移除errorMessage[i]的父节点的子元素中的所有errorMessage[i]的意思吗?


5. parent = inValidityField[i].parentNode;是 定义parent为inValidityField[i]的父元素吗?

parent.insertAdjacentHTML("beforeend", "<div class='error-message'>" + inValidityField[i].validationMessage + "</div>") 意思是在parent最后一个子元素后面插入 class为error-message的div元素。div元素中间inValidityField[i].validationMessage 是什么意思?

6.inValidityField[0].focus();是什么意思?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
卡布琦诺 2019-02-11 16:44:08

问题1:

(1)阻止原有气泡 preventDefault() 方法阻止元素发生默认的行为。event.preventDefault()中的event能否忽略不写?

因为监听的是event事件,所以event.preventDefault()中的event不能忽略

(2)function(event)里的event可以不写吗?event代表什么?event可以用e代替或者忽略不写吗?

因为监听的是event事件,event.preventDefault()中的event不能忽略,因此function(event)中的event不能忽略 

问题2:

(1)addEventListener默认是false,改为true有什么意义?修改为true和false有什么变化?

先来看一个例子:

如果给box加click事件,如果直接单击box没有什么问题,但是如果单击的是child元素,那么它是怎么样执行的?(执行顺序)

http://img1.sycdn.imooc.com//climg/5c612ff20001b78506410544.jpg

也就是说,默认情况事件是按照事件冒泡的执行顺序进行的

如果第三个参数写的是true,则按照事件捕获的执行顺序进行的:

http://img1.sycdn.imooc.com//climg/5c613052000172d706340543.jpg

事件冒泡执行过程:从最具体的的元素(单击的那个元素)开始向上开始冒泡,拿上面的案例讲,它的顺序是:child->box

事件捕获执行过程:从最不具体的元素(最外面的那个盒子)开始向里面冒泡,拿上面的案例讲,它的顺序是:box->child

(2)在这里代码有什么意义?

这里的addEventListener() 方法就是用于向指定元素添加事件句柄

问题3:

(1)这里的error-message的类从哪里来的?没有发现class=error-message

http://img1.sycdn.imooc.com//climg/5c6131cd00014b2614720823.jpg

并且在后面的代码中会在js中追加class为error-message的元素

问题4:

(1)errorMessage[i].parentNode是errorMessage[i]的父节点的意思吗?

首先要了解:parentNode 属性以 Node 对象的形式返回指定节点的父节点,因此这里可以理解为errorMessage[i].parentNode是errorMessage[i]的父节点

(2)errorMessage[i].parentNode.removeChild(errorMessage[i]); 移除errorMessage[i]的父节点的子元素中的所有errorMessage[i]的意思吗?

可以这么理解

问题5:

(1)parent = inValidityField[i].parentNode;是 定义parent为inValidityField[i]的父元素吗?

parent = inValidityField[i].parentNode;意思是选中 inValidityField[i]的父元素,理解成:定义parent为inValidityField[i]的父元素也是正确的。

(2)div元素中间inValidityField[i].validationMessage 是什么意思?

inValidityField[i].validationMessage获取错误信息,将这个错误信息挂载在<div class='error-message'></div>这个元素上

问题6:

(1)inValidityField[0].focus();是什么意思?

inValidityField是获取错误信息,这里的意思是判断是否有错误信息,如果有错误信息,给一个focus,即获取焦点的时候,改变错误信息

希望可以帮到你!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
响应式开发与常用框架 2018
  • 参与学习           人
  • 提交作业       2198    份
  • 解答问题       5012    个

如果你有web端基础,既想进阶,又想进军移动端开发,那就来吧,我们专题为你带来的课程有HTML5、CSS3、移动基础、响应式、bootstrap、less等,让你在前端道路上畅通无阻!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师