有什麼辦法可以訪問關閉內部的事件處理函數。 fiddle在html頁面使用事件在JavaScript中關閉函數?
(function(){
var val="balahhh"
function a(){
alert(val)
}
})
有什麼辦法可以訪問關閉內部的事件處理函數。 fiddle在html頁面使用事件在JavaScript中關閉函數?
(function(){
var val="balahhh"
function a(){
alert(val)
}
})
當然,你可以將其連接到window
對象,但會污染全局範圍。但無論如何
(function() {
var val = "balahhh";
window.a = function() {
alert(val)
}
})(); // call it
嘗試在例如使用正確的事件:
(function() {
document.getElementById('your-id').addEventListener("click", a);
var val="balahhh";
function a(event){
alert(val)
event.preventDefault();
}
})();
而在你的HTML,只是分配一個ID,你的鏈接(或目標的所有鏈接元素,如您祝):
<a href="#" id="your-id"></a>
爲什麼要阻止事件傳播?問題在於如何附加事件處理程序,但您也不必要地添加了OP未指定的功能。 – 2014-12-04 16:55:02
好的,謝謝。這正是我通常如何處理應該只觸發一次的事件。 – nils 2014-12-04 17:19:10
只要在這裏提及;您也可以將事件添加到父元素(例如body)中,並檢查事件源自哪個子元素/子子元素。這樣可以更輕鬆地實現複雜的功能,而不必擔心事件順序和傳播過多。 – 2014-12-04 19:46:05
不是我所知道的......這是關閉的力量。唯一的辦法是提供一個連接到Global範圍內的某個變量。 – rfornal 2014-12-04 16:11:06
不可以。您想讓您的函數變量爲全局變量,或者使用[適當的事件附件](http://quirksmode.org/js/events_advanced.html) – Bergi 2014-12-04 16:11:44