普通网友 2017-07-17 01:28 采纳率: 52.6%
浏览 1455
已采纳

关于JS封装调用的问题

 FivePage = {};
FivePage.show = function() {
    this.change11 = null;
    this.length = 0;
}
FivePage.show.prototype.Ypage1 = function(id) {
    change11 = setInterval(function() {
        length++;
        if(length == $("#" + id + " li").length) {
            length = 0;
        }
        console.log("第五页定时器");
        console.log(this.length);
        console.log(this.ll);
        showaa(length);
    }, 2000);
    function showaa(length) {
        $("#" + id + " li").eq(length - 1).fadeOut(1000); //将上一张图片隐藏
        $("#" + id + " li").eq(length).fadeIn(1000); //将这张图片出现
    }
}
var cbb = new FivePage.show();
btn1.onclick = function() {
    test11.style.display = "block";
    test12.style.display = "none";
    clearInterval(change11);
    alert("现在的下标是:"+length+"page1");
    cbb.Ypage1("test11");
}
btn2.onclick = function() {
    test12.style.display = "block";
    test11.style.display = "none";
    clearInterval(change11);
    alert("现在的下标是:"+length+"Page2");
    cbb.Ypage1('test12');
};

各位大哥,我现在的问题是,我点击btn2的时候,他的length不会从0开始,我需求是
点击bun1length从0开始走,这个时候,btn1的length走到了3,我在点击btn2的时候,length从0开始走。(这个时候,length会等于3,而不是0),所以问题是他们公用了一个length,我写两个变量,会报错为 not defined
当我再次点击btn1的时候,length会从之前的3继续开始走

  • 写回答

4条回答 默认 最新

  • Go 旅城通票 2017-07-17 02:16
    关注
    
        FivePage = {};
        FivePage.show = function () {
            this.change11 = null;
            this.length = 0;
        }
        FivePage.show.prototype.Ypage1 = function (id) {
            var me = this;////闭包,要不setInterval执行的函数中this为window,用me来访问length
            this.change11 = setInterval(function () {
                me.length++;
                if (me.length == $("#" + id + " li").length) {
                    me.length = 0;
                }
                console.log("第五页定时器");
                console.log(me.length);
                console.log(me.ll);
                showaa(length);
            }, 2000);
            function showaa(length) {
                $("#" + id + " li").eq(length - 1).fadeOut(1000); //将上一张图片隐藏
                $("#" + id + " li").eq(length).fadeIn(1000); //将这张图片出现
            }
        }
        var cbb = new FivePage.show();
        btn1.onclick = function () {
            test11.style.display = "block";
            test12.style.display = "none";
            clearInterval(cbb.change11);///////////////////////
            alert("现在的下标是:" + length + "page1");
            cbb.Ypage1("test11");
        }
        btn2.onclick = function () {
            test12.style.display = "block";
            test11.style.display = "none";
            clearInterval(cbb.change11);////////////////
            alert("现在的下标是:" + length + "Page2");
            cbb.Ypage1('test12');
        };
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办