麻烦老师有什么办法可以给我看看啊,我后面的ajax没办法跟着敲了。

麻烦老师有什么办法可以给我看看啊,我后面的ajax没办法跟着敲了。

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

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

1回答
好帮手慕慕子 2022-10-16 17:41:29

同学你好,可以先参考如下思路排查下:

1、因为index.js文件中要获取对应的元素,如下:

https://img1.sycdn.imooc.com//climg/634bd144094c248d13420564.jpg

所以index.art文件中要保留slider-layout元素,如下:

https://img1.sycdn.imooc.com//climg/634bd1110994cf2b13481248.jpg

2、因为数据请求是异步的,实例化Slider获取.slider元素时,可能还没有替换slider-layout元素的内容,无法获取到.slider元素,导致代码报错,无法实现效果

建议修改:将实例化和获取元素并绑定事件的代码放在then方法内部。示例:

https://img1.sycdn.imooc.com//climg/634bd17f09d2463914521368.jpg

如果还有问题,可以将你写的相关代码粘贴过来,老师帮助测试下,祝学习愉快~

  • 提问者 清夏_ #1

    https://img1.sycdn.imooc.com//climg/634bd40a0949efc508190957.jpg可是我还没有开始写那个数据的接口地址呢 怎么放

    2022-10-16 17:51:35
  • 提问者 清夏_ #2
    import './slider.css';
    import './btn.css';
    
    import Slider from './module';
    
    const slider = new Slider(document.querySelector('.slider'), {
      initialIndex: 1,
      animation: true,
      // 切换速度,单位 ms
      speed: 300,
      // 自动切换,单位 ms
      autoplay: 1000
    });
    
    const bannerEl = document.getElementById('banner');
    const leftbtnEl = document.getElementById('leftbtn');
    const rightbtnEl = document.getElementById('rightbtn');
    
    leftbtnEl.addEventListener(
      'click',
      () => {
        slider.prev();
      },
      false
    );
    rightbtnEl.addEventListener(
      'click',
      () => {
        slider.next();
      },
      false
    );
    
    bannerEl.addEventListener(
      'mouseenter',
      () => {
        slider.pause();
      },
      false
    );
    bannerEl.addEventListener(
      'mouseleave',
      () => {
        slider.autoplay();
      },
      false
    );
    // css
    import './css/bundle.css';
    
    
    // 公共的css样式
    import 'styles/base.css';
    import 'styles/reset.css';
    import 'styles/layer_out.css';
    
    
    //js
    import './js/backtotop';
    
    // 公共组件可以取路径别名
    import 'components/topbar';
    import 'components/min-nav';
    import 'components/header-con';
    import 'components/footer-nav';
    import 'components/bottom-bar';
    
    
    
    
    // 单独组件自己找自己的路径
    import './components/slider';
    import './components/menu';
    import './components/jjzyx';
    import './components/fav-ad';
    import './components/xxsw';
    import './components/ddwl';
    import './components/tsddty';
    import './components/zsj';
    import './components/gt';


    2022-10-16 17:54:01
  • 好帮手慕慕子 回复 提问者 清夏_ #3

    因为在请求完数据,替换模板内容后,页面中才会存在slider元素,所以此时页面中并不存在slider元素,无法获取到对应的元素,导致报错,建议同学将如下所示代码注释后,再跟着视频讲解书写代码。

    https://img1.sycdn.imooc.com//climg/634bd7330986270c16201372.jpg

    祝学习愉快~

    2022-10-16 18:05:00
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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