You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slick Slider轮播计数器初始化不显示首张幻灯片计数问题求助

解决Slick Slider首次加载不显示首张幻灯片计数的问题

你开发的带计数功能的Slick Slider轮播组件,目前可正常显示幻灯片总数,但首次加载初始化时无法显示首张幻灯片的计数,只有切换到第二张幻灯片后计数功能才激活,切回首张时计数恢复正常。问题核心在于初始化事件init中仅设置了总数,未同步设置首张幻灯片的当前计数。

修复方案

在init事件处理函数中,添加设置当前激活幻灯片计数的代码,利用Slick初始化完成后默认的首张索引(从0开始),直接计算并赋值即可。

修改后的JavaScript代码:

const addZeroPad = (val) => val.toString().padStart(2, "0");

$('.gallery').each(function (index, sliderWrap) {
    const $module = $(this);
    const $slider = $module.find(".gallery__slides");
    const $slides = $slider.find(".gallery__item");
    const $numbersElem = $module.find(".gallery__counter");
    const $totalNumElem = $module.find(".gallery__counter .gallery__amount");
    const $activeNumElem = $module.find(".gallery__counter .gallery__count");

    if ($slides.length) {
        $slider.on("init", function(event, slick) {
            console.log(slick.$slides.length);
            $totalNumElem.text(addZeroPad(slick.$slides.length));
            // 新增:初始化时设置首张幻灯片的计数
            $activeNumElem.text(addZeroPad(slick.currentSlide + 1));
            $numbersElem.show();
        });

        $slider.on("afterChange", function(event, slick, currentSlide, nextSlide) {
            $activeNumElem.text(addZeroPad(currentSlide + 1));
        });

        $slider.slick({
            dots: false,
            arrows: false,
            speed: 700,
            infinite: false,
            centerMode: true,
            centerPadding: '1%',
            slidesToShow: 1,
            autoplay: true,
            autoplaySpeed: 2000,
            draggable: true,
            pauseOnHover: false,
            variableWidth: false,
        });
    }
});

原理说明

Slick的init事件在轮播初始化完成后触发,此时轮播的当前幻灯片索引slick.currentSlide默认值为0(对应首张幻灯片),将该值加1转为人类习惯的从1开始的序号,再通过addZeroPad格式化后赋值给计数元素,就能实现首次加载时直接显示正确的首张计数。


内容的提问来源于stack exchange,提问作者probablybest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:32:28