2010-11-02 89 views
0

這裏的問題是,在警報頁面有我的最終價值..任何解決方案呢?Javascript ..值得參考的問題可能

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); 
      } 
+1

基於您提供的代碼是頁面變量的正確行爲。你能告訴我們你想完成什麼嗎?如果我們不知道問題,很難知道解決方案。 – 2010-11-02 15:53:25

+0

我不希望頁面是相同的... – GorillaApe 2010-11-02 15:55:03

+0

可能的重複[如何將JS變量的值(而不是引用)傳遞給函數?](http://stackoverflow.com/questions/2568966/我該怎麼做 - 傳遞值 - 不是一個js-variable-to-a-function的參考) – 2010-11-02 16:07:32

回答

3

你應該做這樣的事情:

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

這將使一個額外的外殼使得將不會被覆蓋。

+0

+1肯定是我會這樣做的。 – lonesomeday 2010-11-02 16:08:59

2

您需要將處理程序添加到以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); 
} 

這種方式,一個單獨的封閉件(與單獨的i參數)將被用於每個函數調用生成。

+0

怎麼樣?究竟要達到這個目標? – GorillaApe 2010-11-02 15:55:32

+0

@Parhs:看我的例子。 – SLaks 2010-11-02 16:04:42