老师,对代码执行流程有点疑惑

老师,对代码执行流程有点疑惑

1
<!DOCTYPE html><br><html lang="en"><br><br><head><br>    <meta charset="UTF-8"><br>    <meta http-equiv="X-UA-Compatible" content="IE=edge"><br>    <meta name="viewport" content="width=device-width, initial-scale=1.0"><br>    <title>Document</title><br>    <style><br>        * {<br>            margin: 0;<br>            padding: 0;<br>            list-style: none;<br>            vertical-align: middle;<br>        }<br><br>        #box {<br>            width: 650px;<br>            height: 360px;<br>            border: 1px solid #000;<br>            margin: 10px auto;<br>            position: relative;<br>            /* overflow: hidden; */<br>        }<br><br>        #box a {<br>            width: 50px;<br>            height: 50px;<br>            position: absolute;<br>            background-color: aquamarine;<br>            border-radius: 50%;<br>            top: 50%;<br>            margin-top: -25px;<br>        }<br><br>        #box a#lbtn {<br>            left: 10px;<br>        }<br><br>        #box a#rbtn {<br>            right: 10px;<br>        }<br><br>        #box #list {<br>            width: 5000px;<br>            left: 0;<br>            position: absolute;<br>        }<br><br>        #box #list li {<br>            float: left;<br>        }<br>    </style><br></head><br><br><body><br>    <div id="box"><br>        <ul id="list"><br>            <li><img src="images/beijing/0.jpg" alt=""></li><br>            <li><img src="images/beijing/1.jpg" alt=""></li><br>            <li><img src="images/beijing/2.jpg" alt=""></li><br>            <li><img src="images/beijing/3.jpg" alt=""></li><br>            <li><img src="images/beijing/4.jpg" alt=""></li><br>            <li><img src="images/beijing/0.jpg" alt=""></li><br>        </ul><br>        <a href="Javascript:;" id="lbtn"></a><br>        <a href="Javascript:;" id="rbtn"></a><br>        <script><br>            var oBox = document.getElementById('box');<br>            var oLbtn = document.getElementById('lbtn');<br>            var oRbtn = document.getElementById('rbtn');<br>            var oList = document.getElementById('list');<br>            var num = 0;<br>            var lock = true;<br>            var move;<br>            oList.style.transition = 'left .5s ease 0s';<br><br>            function timer() {<br><br>                move = setInterval(function () {<br>                    num++<br>                    if (num == 6) {<br>                        num = 0;<br>                        oList.style.transition = 'none';<br>                        setTimeout(function () {<br>                            num++<br>                            oList.style.left = -num * 650 + 'px';<br>                            oList.style.transition = 'left .5s ease 0s';<br>                        }, 0)<br>                    }<br>                    oList.style.left = -num * 650 + 'px'<br>                }, 1500);<br>            }<br><br>            timer()<br><br>            oBox.onmouseenter = function () {<br>                clearInterval(move)<br>            }<br><br>            oBox.onmouseleave = function () {<br>                timer()<br>            }<br><br>            oLbtn.onclick = function () {<br>                if (lock != true) return;<br>                lock = false;<br>                if (num == 0) {<br>                    num = 5<br>                    oList.style.transition = 'none';<br>                    setTimeout(function () {<br>                        num--<br>                        oList.style.left = -num * 650 + 'px';<br>                        oList.style.transition = 'left .5s ease 0s';<br>                    }, 0)<br>                } else {<br>                    num--<br>                }<br>                oList.style.left = -num * 650 + 'px';<br>                setTimeout(function () {<br>                    lock = true;<br>                }, 500)<br>            }<br><br>            oRbtn.onclick = function () {<br>                if (lock != true) return;<br>                lock = false;<br>                num++<br>                if (num == 6) {<br>                    num = 0;<br>                    oList.style.transition = 'left .5s ease 0s';<br>                    oList.style.left = -num * 650 + 'px';<br><br>                    // setTimeout(function () {<br>                    num++<br>                    oList.style.left = -num * 650 + 'px';<br>                    oList.style.transition = 'left .5s ease 0s';<br>                    // }, 0)<br>                }<br>                oList.style.left = -num * 650 + 'px';<br>                // oList.style.transition = 'left .5s ease 0s';<br>                // oList.style.left = -num * 650 + 'px';<br>                // if (num == 5) {<br>                //     setTimeout(function () {<br>                //         num = 0<br>                //         oList.style.left = -num * 650 + 'px';<br>                //         oList.style.transition = 'none'<br>                //     }, 500)<br>                // }<br>                setTimeout(function () {<br>                    lock = true;<br>                }, 500)<br>            }<br>        </script><br>    </div><br></body><br><br></html><br>

相关截图:

http://img1.sycdn.imooc.com//climg/60bdc27f095eac2208980464.jpg

问题描述:

图中右按钮代码,如果在没用延时器的情况下,

为什么在最后一张图片继续点右按钮后

不是先从最后一张咕噜回第一张图,然后再过渡到第二张图

而是直接从最后一张咕噜到第二张图呢?

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

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

2回答
好帮手慕言 2021-06-07 18:47:37

同学你好,代码是执行了的,但是后面有相同属性设置,进行了覆盖,渲染了最终的效果。祝学习愉快~

好帮手慕言 2021-06-07 17:36:35

同学你好,因为有num++。例如:num的值为6,符合if条件,num的值赋值为0,代码往下执行,num++,num的值为1,所以显示的第二张图片。

http://img1.sycdn.imooc.com//climg/60bde7bb09f512f703900380.jpg

如果把num++去掉,那就会显示第一张图片。

祝学习愉快~

  • 提问者 __Promise #1

    老师,我是想问代码执行和渲染的流程具体是怎样的,

    代码从上往下执行,为什么会跳过num=0时的过渡,而直接执行num=1时的过渡

    num =0和他后面两条语句是执行了没渲染,还是根本没有执行

    2021-06-07 17:41:21
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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