直接上程式碼
程式碼如下,全選功能不好用
var _select_all = document.getElementById("select_all");
var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
_select_all.addEventListener("click",function() {
for(var i = 0;i<_input.length;i++) {
_input[i].checked="checked";
}
})
改動(dòng)一句話
var _select_all = document.getElementById("select_all");
_select_all.addEventListener("click",function() {
var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
for(var i = 0;i<_input.length;i++) {
_input[i].checked="checked";
}
})
為什麼要把_input放到下面程式碼正常執(zhí)行了?根據(jù)作用域回呼函數(shù)中不是可以取得到外界的變數(shù)嗎?
光陰似箭催人老,日月如移越少年。
var _select_all = document.getElementById("select_all");
var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
console.log(_input);
_select_all.addEventListener("click",function() {
for(var i = 0;i<_input.length;i++) {
_input[i].checked="checked";
}
})
log出來看看就知道了,如果是undefined的話就知道問題出在那了。
一個(gè)是事先查好節(jié)點(diǎn)快取起來,一個(gè)是點(diǎn)擊的時(shí)候即時(shí)去查節(jié)點(diǎn)。如果 #shop_content ul input[type=checkbox] 這個(gè)選擇器對(duì)應(yīng)的節(jié)點(diǎn)不會(huì)改變的話兩種方法是一樣的,而且快取的效率比較高。如果對(duì)應(yīng)節(jié)點(diǎn)可能刪除、增加或更換,必須使用第二種方法,每次點(diǎn)擊的時(shí)候即時(shí)去找節(jié)點(diǎn)