關(guān)鍵詞:點擊計數(shù)
我們做個小實例翎苫,當鼠標點擊每個按鈕時权埠,顯示點擊該按鈕的次數(shù)
<!-- HTML代碼 -->
<button>單擊1</button>
<button>單擊2</button>
<button>單擊3</button>
<button>單擊4</button>
<button>單擊5</button>
var btn = document.querySelectorAll("button");
var i = 0;
var count = 0;
通常初學者會這樣做
// 初學者傳統(tǒng)的做法一般是這樣的
for(i=0;i<btn.length;i++){
btn[i].onclick = function(){
count++;
console.log(count);
}
}
// 但是這種方法不能實現(xiàn)每個按鈕分別計數(shù)
我思來想去,覺得可能是count有問題煎谍,所以對代碼進行了改版
// 把count放在了for循環(huán)里
for(i=0;i<btn.length;i++){
count++;
add(btn[i])
}
function add(obj) {
obj.onclick = function () {
console.log(count);
}
}
// 但是每次結(jié)果都是5 555[捂臉]~
for這個循環(huán),飛速完成了所有的遍歷粱快,讓我猝不及防~
既然是對每個按鈕做點擊計數(shù),那我就把count放在點擊事件外面事哭!
for(i=0;i<btn.length;i++){
add(btn[i])
}
function add(obj) {
var count = 0;
obj.onclick = function () {
count++;
console.log(count);
}
}
// 來之不易的成功瓜富!
其實我們還可以通過閉包的方法實現(xiàn)這一功能鳍咱,Mark下我的另一篇文章 [閉包][]
[閉包]: http://www.reibang.com/p/5190f033d6fd
for(i=0;i<btn.length;i++) {
btn[i].onclick = (function (count) {
return function () {
count++;
console.log(count);
}
})(0); // 小括號里是function的參數(shù)