为什么我的内层顺序没有发生变化

为什么我的内层顺序没有发生变化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box3{
            width: 100px;
            height: 100px;
            border: 1px solid black;
        }
        #box2{
            width: 100px;
            height: 100px;
            border: 1px solid black;
            padding: 20px;
        }
        #box1{
            width: 142px;
            height: 142px;
            border: 1px solid black;
            padding: 20px;
        }
    </style>
</head>
<body>
    <div id="box1">
        <div id="box2">
            <div id="box3"></div>
        </div>
    </div>
    <script>
        var box1 = document.getElementById('box1')
        var box2 = document.getElementById('box2')
        var box3 = document.getElementById('box3')

        box1.onclick = function(){
            console.log('我是box1的onclick')
        }
        box2.onclick = function(){
            console.log('我是box2的onclick')
        }
       
        box1.addEventListener('click',function(){
            console.log('我是box1的捕获阶段');
        },true)
        box2.addEventListener('click',function(){
            console.log('我是box2的捕获阶段');
        },true)
        //======================================
        box3.addEventListener('click',function(){
            console.log('我是box3的冒泡阶段');
        },false)
        box3.onclick = function(){
            console.log('我是box3的onclick')
        }
        box3.addEventListener('click',function(){
            console.log('我是box3的捕获阶段');
        },true)
        //======================================
        box1.addEventListener('click',function(){
            console.log('我是box1的冒泡阶段');
        },false)
        box2.addEventListener('click',function(){
            console.log('我是box2的冒泡阶段');
        },false)
    </script>
</body>
</html>

问题描述:

老师,我按照课程内,调换了内层的捕获、冒泡、onclick顺序,为什么执行后没有按照书写的顺序执行。

相关截图:

https://img1.sycdn.imooc.com//climg/64aa72b009ad0c7604340242.jpghttps://img1.sycdn.imooc.com//climg/64aa72a3090c95e702060249.jpg

正在回答

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

1回答

同学你好,在chrome谷歌浏览器测试不一致是版本的问题,最新版本内层元素仍然是先捕获后冒泡,与顺序无关。同学可以尝试使用火狐浏览器测一下看看。

另外重点在于它的规则:捕获在前(由外到内),冒泡在后(由内到外)。即使冒泡写在前面, 也是需要先捕获到元素。

祝学习愉快!

  • 半噩谛昱 提问者 #1

    意思是在之前版本里,内层元素是按照课程里说的,不按照先捕获 还是 先冒泡,是按照写的顺序。

    然后现在的最新版本 修正了这个,依旧是先捕获后冒泡,不按照顺序  

    2023-07-10 10:28:11
  • 好帮手慕小李 回复 提问者 半噩谛昱 #2

    对是这样的,因为浏览器一直在迭代,所以代码执行顺序会更加的规范或者修订一些规范,这样就使得以上的问题产生出来了。

    2023-07-10 10:29:34
  • 半噩谛昱 提问者 回复 好帮手慕小李 #3

    好的 感谢~

    2023-07-10 10:36:04
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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