老师这里报错是什么意思,百度说是引入的问题,怎么修改

来源:3-2 项目作业

slender0923

2022-04-15 20:01:55

https://img.mukewang.com/climg/62595e37099198bf19201080.jpg

js:

   // 得到元素

    var banner=document.getElementById('banner');

    var carousel_list = document.getElementById('carousel_list');

    var circle_ol = document.getElementById('circle_ol');

    var circle_lis = circle_ol.getElementsByTagName('li');

    // 当前正在显示的图片序号,从0开始

    var idx = 0;

    // 设置小圆点的current在谁身上,序号为idx的小圆点才有current类名,其他的li都没有类名

    function setCircles() {

        // 遍历,遍历0、1、2

        for (var i = 0; i <= 2; i++) {

            if (i == idx) {

                circle_lis[i].className = 'current';

            } else {

                circle_lis[i].className = '';

            }

         }

    }

     // 事件委托 ,小圆点的监听

     circle_ol.onclick = function (e) {

        if (e.target.tagName.toLowerCase() == 'li') {

            //得到li身上的data-n属性,就是n

            var n = Number(e.target.getAttribute('data-n'));

            //改变idx

            idx = n;

            //拉动

            carousel_list.style.transform = 'translateX(' + -33.33 * idx + '%)';

        setCircles();

        }

    }      

function autoplay(){

    idx++

    if(idx>2){

        idx=0

    }

    carousel_list.style.transform='translateX('+ -33.333*idx+'%)';

    setCircles();

}

var timer=setInterval(function(){

    autoplay()

},2000);

banner.onmouseenter=function(){

    clearInterval(timer)

}

banner.onmouseleave=function(){

    clearInterval(timer);

    var timer=setInterval(function(){

        autoplay()

    },2000);

}

h5:

<section class="banner" id="banner">

        <ul id="carousel_list" class="carousel_list">

            <li>

                <img src="./images/banner01.png" alt="">

            </li>

            <li>

                <img src="./images/banner02.png" alt="">

            </li>

            <li>

                <img src="./images/banner03.png" alt="">

            </li>

        </ul>

        <ol class="circles" id="circles_ol">

            <li data-n="0"></li>

            <li data-n="1"></li>

            <li data-n="2"></li>

        </ol>

    </section>

    <script src="./js/banner.js"></script>

css:

.banner{

    position: relative;

}

.banner .carousel_list {

    width: 300%;

    /* 清除浮动 */

    overflow: hidden;

    /* translateX中的百分数表示相对于它本身的宽度的多少倍 */

    /* transform: translateX(-16.66%); */

    transition:transform .5s ease 0s;

}

.banner .circles{

    width: 100px;

    height: 15px;

    position: absolute;

    bottom: 50px;

    left: 50%;

    margin-left: -20px;

    z-index: 9999;

}

.banner .circles li{

    float: left;

    width: 10px;

    height: 10px;

    margin-right: 10px;

    border-radius: 50%;

    transition: all .4s ease 0s;

    background-color:  #FFFFFF;;

}

.banner .circles li:last-child{

    margin-right: 0px;

}

.banner .circles li.current{

    width: 10px;

    background-color: #0058AA;

}

.banner .carousel_list li{

    width: 33.333%;

    float: left;

}

.banner .carousel_list li img{

    width: 100%;

    vertical-align: middle;

}


写回答

2回答

好帮手慕星星

2022-04-16

同学你好,js中改错位置了,s需要加在获取元素的地方,而不是改变量名

https://img.mukewang.com/climg/625a61c409a48b9109790469.jpg

// var circle_ol = document.getElementById('circle_ol');
    var circle_ol = document.getElementById('circles_ol');

    // var circle_lis = circles_ol.getElementsByTagName('li');
    var circle_lis = circle_ol.getElementsByTagName('li');

自己再测试下。

0

好帮手慕星星

2022-04-16

同学你好,小圆点的id值是circles_ol,获取的时候少了一个s,所以没有获取到元素,也就无法获取下面的子元素。如下修改:

https://img.mukewang.com/climg/625a1e240912b21308150497.jpg

祝学习愉快!

0
hlender0923
hp style="white-space:normal;">js:

   // 得到元素

    var banner=document.getElementById('banner');

    var carousel_list = document.getElementById('carousel_list');

    var circle_ol = document.getElementById('circle_ol');

    var circle_lis = circles_ol.getElementsByTagName('li');

    // 当前正在显示的图片序号,从0开始

    var idx = 0;

    // 设置小圆点的current在谁身上,序号为idx的小圆点才有current类名,其他的li都没有类名

    function setCircles() {

        // 遍历,遍历0、1、2

        for (var i = 0i <= 2i++) {

            if (i == idx) {

                circle_lis[i].className = 'current';

            } else {

                circle_lis[i].className = '';

            }

         }

    }

     // 事件委托 ,小圆点的监听

     circle_ol.onclick = function (e) {

        if (e.target.tagName.toLowerCase() == 'li') {

            //得到li身上的data-n属性,就是n

            var n = Number(e.target.getAttribute('data-n'));

            //改变idx

            idx = n;

            //拉动

            carousel_list.style.transform = 'translateX(' + -33.33 * idx + '%)';

        setCircles();

        }

    }      

function autoplay(){

    idx++

    if(idx>2){

        idx=0

    }

    carousel_list.style.transform='translateX('+ -33.333*idx+'%)';

    setCircles();

}

var timer=setInterval(function(){

    autoplay()

},2000);

banner.onmouseenter=function(){

    clearInterval(timer)

}

banner.onmouseleave=function(){

    clearInterval(timer);

    var timer=setInterval(function(){

        autoplay()

    },2000);

}


h022-04-16
共4条回复

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

20327 学习 · 17877 问题

查看课程