搜尋

首頁  >  問答  >  主體

javascript - btn.addEventListener('click',fn,false);怎麼給fn傳參數?

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

我想大声告诉你我想大声告诉你2845 天前774

全部回覆(6)我來回復

  • 習慣沉默

    習慣沉默2017-05-18 10:52:06

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

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

    回覆
    0
  • 黄舟

    黄舟2017-05-18 10:52:06

    不知道你想傳什麼。

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

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:52:06

    btn.addEventListener('click',function(){fn('params')});
    function fn(data) {
        alert(data)
    }

    這樣試試?

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-18 10:52:06

    雷雷

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-18 10:52:06

    雷雷

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-18 10:52:06

    我沒找到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函數還不是很熟,歡迎討論指正。

    回覆
    0
  • 取消回覆