javascript - btn.addEventListener('click',fn,false);怎麼給fn傳參數?
我想大声告诉你
我想大声告诉你 2017-05-18 10:50:06
0
6
746

試過了看似傳不進去? ? ?

我想大声告诉你
我想大声告诉你

全部回覆(6)
習慣沉默

為什麼這麼多人踩?我覺得是個好問題啊,閉包解決之

<button>click</button>
<script>
    document.querySelector("button").addEventListener("click", fn('hello world'), false);
    
    function fn(a) {
        return function() {
            alert(a);
        }
    }
</script>
黄舟

不知道你想傳什麼。

不過你可以把fn定義成返回函數的函數。基本能滿足需求…

给我你的怀抱
btn.addEventListener('click',function(){fn('params')});
function fn(data) {
    alert(data)
}

這樣試試?

巴扎黑

雷雷

巴扎黑

雷雷

巴扎黑

我沒找到addEventListener的函數原型,在平常使用中我的感覺是。
addEventListener在捕捉觸發事件之後,給呼叫函數名後加()呼叫
那麼

btn.addEventListener('click',fn,false);

的監聽事件addEventListener捕捉到click事件之後,執行的函數便是fn()
addEventListener有的這個弊端就是它不能添加帶參數的括號,即不能捕捉到click之後執行fn(1,2).
所以平常的時候,我都是用一個匿名函數function(){fn(1,2)}作為綁定函數。那麼程式碼變成這樣了:

btn.addEventListener('click',function(){fn(1,2)},false)

在捕捉click事件之後,觸發的函數便是
function(){fn(1,2)}()
即可實現觸發fn(1,2)這樣的帶參數函數。

對addEventListener函數還不是很熟,歡迎討論指正。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板