給事件處理函數傳參數
今天刷百度前端學院的任務,遇到了一個問題,需要給事件處理函數傳參數;我把問題抽象成下面問題:
var lis = document.getElementsByTagName('li'); for(var i=0; i<lis.length; i++){ this.i=i; btn.addEventListener('click',handler.bind(this)); } //我想在事件處理函數里面獲得i。 function handler(e){ this.i; }
ES5中bind()解決:
解決方法,將事件處理函數的上下文綁定到for循環里面的this;事件處理函數的上下文不在是btn對象;
分析一下原理,首先詳細研究一下bind函數;
bind函數用於將當前函數和指定對象綁定,返回一個新的函數,當新函數被調用時,代碼會在指定對象的上下文中執行。
語法為:
bar.bind(上下文參數, 普通參數1, 普通參數2, …);普通參數將傳入bar函數
詳細:https://blog.csdn.net/github_38861674/article/details/72625542
