2012-05-20 80 views
0

這是關於JS變量作用域的第n個問題,但我通讀了其餘部分,並沒有完全得到答案。Javascript變量範圍與事件處理程序

var notification = window.webkitNotifications.createNotification(
'image.png',      // The image. 
'New Post: ',// The title. 
'New stuff'// The body. 
); 

var itemLink = 'http://pathtothefile.com'; 

notification.onclick = function(itemLink) { 
window.focus(); 
window.open(itemLink,'_blank'); 
this.cancel(); 
}; 

notification.show(); 

如何獲取在全局範圍中定義的itemLink以在onclick函數中工作?

+2

將其從參數列表中刪除。它只是在那裏自動,因爲它是一個較小的範圍。 – Corbin

回答

2

從功能刪除參數:

notification.onclick = function(itemLink) { // overrides itemLink in the global 
              // object. 

固定碼:

notification.onclick = function() { 
    window.focus(); 
    window.open(itemLink,'_blank'); 
    this.cancel(); 
}; 
+0

非常感謝gdoron,這解決了我的問題 – kakoma

1

在名稱衝突,局部變量優先。刪除或重命名參數itemLink

notification.onclick = function(something_else) { 
    //global itemLink should be accessible 
}; 
+0

非常感謝約瑟夫。 – kakoma