老师,这个代码会报错

老师,这个代码会报错

<!DOCTYPE html>

<html lang="zh-CN">

  <head>

    <meta charset="UTF-8" />

    <meta

      name="viewport"

      content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"

    />

    <title>4.4 幻灯片的操控部分--左右拖动</title>

    <link rel="stylesheet" href="css/slider.css" />

  </head>

  <body>

    <div id="slider" class="slider">

      <div class="slider-item-container">

        <div class="slider-item">

          <a href="###" class="slider-link">

            <img src="img/1.jpg" alt="slider" class="slider-img" />

          </a>

        </div>

        <div class="slider-item">

          <a href="###" class="slider-link">

            <img src="img/2.jpg" alt="slider" class="slider-img" />

          </a>

        </div>

        <div class="slider-item">

          <a href="###" class="slider-link">

            <img src="img/3.jpg" alt="slider" class="slider-img" />

          </a>

        </div>

        <div class="slider-item">

          <a href="###" class="slider-link">

            <img src="img/4.jpg" alt="slider" class="slider-img" />

          </a>

        </div>

        <div class="slider-item">

          <a href="###" class="slider-link">

            <img src="img/5.jpg" alt="slider" class="slider-img" />

          </a>

        </div>

      </div>

    </div>


    <script src="js/hammer.min.js"></script>

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

    <script>

      var slider = new Slider(document.getElementById("slider"), {

        initIndex: 0, // 初始显示第几张幻灯片,从0开始

        speed: 300, // 幻灯片的切换速度

        hasIndicator: true, // 是否需要指示器indicator

      });


      var hammer = new Hammer(slider.getItemContainer());


      hammer.on("panmove", function (ev) {

        // console.log('panmove', ev);

        var distance = ev.deltaX + slider.getDistanceByIndex(slider.getIndex());


        slider.move(distance);

      });

      hammer.on("panend", function (ev) {

        // console.log('panend', ev);

        var distance = ev.deltaX + slider.getDistanceByIndex(slider.getIndex());

        var index = getIndexByDistance(distance);

        console.log(index);

        slider.to(index);

      });


      // 根据容器的移动距离获取索引

      function getIndexByDistance(distance) {

        if (distance > 0) {

          return 0;

        } else {

          return Math.round(-distance / slider.getDistancePerSlide());

          // 0.6 / 1 = 0.6 = 1

          // 0.4 / 1 = 0.4 = 0

          // 1 - 0.4 = 0.6 1

          // 1 - 0.6 = 0.4 0

        }

      }

    </script>

  </body>

</html>



正在回答

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

2回答

同学你好,这个报错是说,Hammer 没有定义。

老师这里测试,并没有这个错误,同学可以看下hammer文件是否有正确引入。

祝学习愉快~

  • 有引入,只是源码下载下来的时候文件名是不是引入的hammer.min.js。而是:hammer.js,改过来了,现在不报错了!
    2020-06-20 14:10:46
好帮手慕糖 2020-06-20 11:35:05

同学你好,是在第一张或者是最后一张,再次点击会报错吗?这是因为没有处理过界,

建议:只需要在to方法里面调用一下_adjustIndex方法就可以了。

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

如果帮助到了你,欢迎采纳~祝学习愉快~

  • 是打开网页就报错:Failed to load resource: net::ERR_FILE_NOT_FOUND 4.5 幻灯片的操控部分--左右拖动.html:52 Uncaught ReferenceError: Hammer is not defined at 4.5 幻灯片的操控部分--左右拖动.html:52
    2020-06-20 13:27:23
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

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

在线咨询

领取优惠

免费试听

领取大纲

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