2013-02-10 29 views
0

這是如何超級討厭的? http://jsfiddle.net/b3xyx/Javascript for-loop放置一個指針而不是鏈接指定變量的副本

  • 我使用addEventListener爲每個鏈接分配一個javascript函數。
  • 貫穿於各個環節的循環迭代,分配一個遞增變量x
  • 但實際上,當你點擊的鏈接 - 而不是提醒x的值,它會提醒x的最後值;即它剛分配了一個指向x的指針而不是複製它。
  • 點擊此處查看:http://jsfiddle.net/b3xyx/點擊任何鏈接將提醒「4」。格兒。

    function goToSite(where){ 
         alert("This would take you to " + where + ".com") 
        } 
    
        for(var x=1; x<=3; x++){ 
         document.getElementById('link'+x).addEventListener('click', function(){goToSite(x)}) 
        } 
    

我如何解決此問題?有沒有辦法在這種情況下創建一個變量的真實副本?


編輯:謝謝你建議duplicate,但它似乎並不重複。

http://jsfiddle.net/aERRE/

^我的更新代碼:

function goToSite(whichOne){ 
    return function(){ 
     alert("This would take you to " + whichOne + ".com"); 
    } 
} 

還不行。

+0

查找「JavaScript關閉」 – 2013-02-10 22:38:39

+0

goToSite中的參數需要更改爲x或者警報中的x需要更改爲其中的位置。 – 2013-02-10 22:51:16

+0

感謝店面 - 現在改變了。問題依然存在。 – LittleBobbyTables 2013-02-10 23:15:08

回答

0

在javascript中,for(var x ...)轉換,var x被移動到函數的開頭。因此,goToSite中的x指的是您在每次迭代中增加的全局x,請閱讀關閉以瞭解其發生的原因...

+0

謝謝。是的,我有點理解它每次都指向相同的變量,這將是for循環的最後一個值。但是我正在尋找一個簡單的解決方案,以便將來可以使用。 – LittleBobbyTables 2013-02-10 22:45:50

+0

如何爲所有鏈接定義一個'onclick'函數,並讓它只提醒'this'的id(被點擊的鏈接?) – 2013-02-10 22:47:31

+0

我很想做這個,但不知道 – LittleBobbyTables 2013-02-10 22:55:32

相關問題