鍍金池/ 問答/HTML/ addEventListener綁定的函數(shù)中添加形式參數(shù)的問題

addEventListener綁定的函數(shù)中添加形式參數(shù)的問題

比如說這段代碼:

 function add() {
    console.log('add')
}
document.querySelector('#ipt').addEventListener('click',add);

我現(xiàn)在的需求是想讓add函數(shù)中帶參數(shù),即:

 function add(val) {
    console.log('add'+val)
}
document.querySelector('#ipt').addEventListener('click',add('argument'));

這樣寫又不對,請問怎么實現(xiàn)add帶參數(shù)的函數(shù)形式傳入?

回答
編輯回答
野橘

其實就是返回一個函數(shù)就好了

 function add(val) {
    return function(e) {
       console.log(val)
       console.log(e)
    }
}
document.querySelector('#ipt').addEventListener('click',add('argument'));
2017年12月25日 23:45
編輯回答
法克魷

因為監(jiān)聽函數(shù)的第二個參數(shù)必須為函數(shù),所以要么外面套一層函數(shù),要么add方法返回一個函數(shù)。

但其實這兩點都不推薦,因為返回的函數(shù)沒有變量對其引用,無法取消監(jiān)聽

最好將最終生成的函數(shù)賦給一個變量,用這個變量當(dāng)參數(shù)

2018年1月23日 11:49
編輯回答
孤影

簡單的話:document.querySelector('#ipt').addEventListener('click',function(){add('argument');});
fancy一點的話,可以用函數(shù)柯里化

2017年9月22日 17:52