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

如何将窗口resize函数的visibleSlides值传递至Next按钮点击函数?

解决方法

你的问题核心在于没有把resize时获取到的可见幻灯片数量持久化存储,导致点击Next按钮时调用getSlideCount()没有传入有效参数,自然返回undefined。

可以通过一个变量来保存当前可见幻灯片的数量,修改后的代码如下:

// 定义变量存储当前可见幻灯片数,初始值先获取一次(避免页面加载后未resize就点击Next的情况)
let currentVisibleSlides = $(".carousel-item.slick-active").length;

$(window).resize(function () {
   // resize时更新变量值
   currentVisibleSlides = $(".carousel-item.slick-active").length;
});
            
// 直接返回存储的变量值
function getSlideCount(){
   return currentVisibleSlides;
}

$(".slick-next").click(function(){
    $("#counter").append(`Next ${getSlideCount()} items`);
});

改动说明:

  • 新增currentVisibleSlides变量,用来持久化存储当前可见幻灯片的数量,页面加载时就初始化一次值。
  • resize事件中不再调用getSlideCount,而是直接更新currentVisibleSlides的最新值。
  • 修改getSlideCount函数,不需要接收参数,直接返回存储的变量值。
  • 点击Next按钮时,调用getSlideCount()就能拿到最新的可见幻灯片数量。

如果不想让变量污染全局作用域,也可以用闭包封装:

const slideCounter = (function() {
    let currentVisibleSlides = $(".carousel-item.slick-active").length;

    $(window).resize(function () {
        currentVisibleSlides = $(".carousel-item.slick-active").length;
    });

    return {
        getCount: function() {
            return currentVisibleSlides;
        }
    };
})();

$(".slick-next").click(function(){
    $("#counter").append(`Next ${slideCounter.getCount()} items`);
});

这种方式把变量封装在闭包内部,更符合模块化写法,不会影响全局作用域的其他变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:41:04