代码之家  ›  专栏  ›  技术社区  ›  GorillaApe

Javascript。。参考值可能有问题

  •  0
  • GorillaApe  · 技术社区  · 15 年前

    这里的问题是,处于警报状态的页面的最终值是i。。有什么解决办法吗?

      for(var i=start;i<=end;i++)
                {
                    num=pageNumber.clone();
    
                    num.click(function(event)
                    {
                        event.preventDefault();
                        var page=i;
                       alert(page);
                       // drawPager();
                    });
                    num.find("span").text(i);
                    if(i==curPage) {
                        num.find("span").addClass("current");
                        num=num.find("span");
    
    
                    }
                    $("#pager>div").append(num);
                }
    
    2 回复  |  直到 15 年前
        1
  •  3
  •   bisko    15 年前

    你应该这样做:

    num.click(function(i) {
       return function(event) {
            event.preventDefault();
            var page = i;
            alert(page);
       }
    }(i));
    

        2
  •  2
  •   SLaks    15 年前

    您需要在一个单独的函数中添加处理程序 i 作为参数。

    for(var i=start;i<=end;i++) {
        handlePage(i);
    }
    
    function handlePage(i) {
        num=pageNumber.clone();
    
        num.click(function(event)
        {
            event.preventDefault();
            var page=i;
           alert(page);
           // drawPager();
        });
        num.find("span").text(i);
        if(i==curPage) {
            num.find("span").addClass("current");
            num=num.find("span");
    
    
        }
        $("#pager>div").append(num);
    }
    

    这样,一个单独的闭包