普通网友 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 ghpython这里总是报错而且rhino视图窗口内不显示怎么办
  • ¥15 布尔运算推导,请证明
  • ¥15 有没有人会打学生成绩管理系统呀
  • ¥15 在使用Fiddler和夜神模拟器抓包的时候一直出现443该怎么办啊QAQ搜了好几个笔记都没有解决
  • ¥15 3x7的二维数组A、B、C,A中的任意1个数组元素与B的任意1个数组元素、同时又与C的任意1个数组元素比较,把不同位置出现相同数的比较称为无意义,反之称为有意义,把有意义的比较打印输出。
  • ¥20 预测模型怎么处理原始数据(随机森林)
  • ¥20 请问discuz3.5如何实现插入ckplayer全能播放器功能呢?
  • ¥15 thingsboard代码编译出错误
  • ¥15 博途v18仿真报错怎么解决
  • ¥15 欧姆龙plc枕式包装机 ST编程