2011-02-24 111 views
0

我試圖做一個地圖shiftzoom.jsJavascript循環;越來越

當前變量我有下面的代碼片段:

function selectall() { 
    for (i in geodata['world']) { 
     var q = getGeoPosition('world', i.toUpperCase(), 1654, 496, 1350, 407); 
     shiftzoom.construct($('world'), [{ 
      x: q.l, 
      y: q.t, 
      w: 40, 
      h: 40, 
      id: geodata['world'][i].lc, 
      pos: 0, 
      title: '', 
      href: "javascript:get_lake(i); ", 
      target: 'graphFrame', 
      src: 'images/bullet.gif' 
     }]); 
     cvi_tip.add(cvi_tip.$(geodata['world'][i].lc), '<small>Province:</small><br/><big><b><u>' + geodata['world'][i].ln + '</u></b></big><br/><small>LAT/LONG:</small><br/><big><b>' + geodata['world'][i].coord + '</b></big><br/><small>PROVINCE:</small><br/><big><b><i>' + geodata['world'][i].pr + '</i></b></big>'); 
    } 
} 

我的定位點來表示在地圖上的湖泊,我想它放大在點擊時點擊。這就是函數get_lake所做的,但是我點擊的每個點都會放大顯示「i」的最後一個值。我曾嘗試使用像這樣的閉包:

href:"javascript:function(num){return function(){get_lake(num);};}(i);" 

但我可能沒有正確使用它,因爲此代碼無法運行。有誰知道如何編寫代碼,以便函數調用當前變量而不是最後一個?

感謝

+0

直到您點擊鏈接時,「href」代碼纔會被評估。到那時變量'i'將具有完全不同的價值 - 如果它在這種情況下可用...很多學習,你有,年輕的Padawan ... :-D – Martijn 2011-02-24 20:36:14

+0

有沒有解決這個問題的方法? – LostLin 2011-02-24 21:21:21

回答

2

我會說實話,我不熟悉你正在使用的庫,我發現你發佈的代碼是絕對的MESS!縮進將有助於可讀性。不管怎樣,試試這個:

href:"javascript:get_lake("+i+"); ", 

閉包是不打算在這裏工作,因爲你沒有創建一個函數有:你正在做一個字符串。因此,將i的值連接到字符串中。

+0

我試着把這個放在我的代碼中,但是我的代碼沒有運行。對不起,亂碼。是否有另一種解決方法? – LostLin 2011-02-24 21:34:08