FanlyBaby
2016-10-23 14:30:39
? <script type="text/javascript">??? /*??? * 點(diǎn)全選,全部選擇或者全部取消??? * 點(diǎn)其余任意一個(gè)自動(dòng)判斷全選是否需要選上[重點(diǎn)]??? * js必須寫在下面,否則需要onload函數(shù)??? * */??? var all = document.getElementById("all");??? var product = document.getElementsByName("product"),l = product.length;??? all.onclick = function(){????? for(var i=l;i--;){????????? product[i].checked = all.checked;????? }??? };??? for(var i=l;i--;){??????? product[i].onclick = function(){??????????? var k = 0;??????????? for(var i=l;i--;){?????????? ??? ?product[i].checked && k++;??????????? }??????????? all.checked = l==k;??????? };??? }</script>里面的:for(var i=l;i--;){??????? product[i].onclick = function(){??????????? var k = 0;??????????? for(var i=l;i--;) product[i].checked && k++;??????????? all.checked = l==k;??????? };??? }這段代碼什么意思?如果不簡寫是怎樣子的?
2 回答
已采納

stone310
TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
這段代碼就是每次點(diǎn)擊的時(shí)候,判斷被選中的數(shù)量有幾個(gè),當(dāng)被選中的數(shù)量等于所有的數(shù)量,則全選勾上;
下面注釋中,非簡寫模式都寫在原語句下方,可以替換原語句使用,其中遍歷方向,從頭到尾和從尾到頭在這里其實(shí)都一樣;
<script> ????/* ?????*?點(diǎn)全選,全部選擇或者全部取消 ?????*?點(diǎn)其余任意一個(gè)自動(dòng)判斷全選是否需要選上[重點(diǎn)] ?????*?js必須寫在下面,否則需要onload函數(shù) ?????*?*/ ????var?all?=?document.getElementById("all"); ????var?product?=?document.getElementsByName("product"), ????????????l?=?product.length; ????all.onclick?=?function?()?{ ????????for?(var?i?=?l;?i--;)?{ ????????????product[i].checked?=?all.checked; ????????} ????}; ????????for(var?i=l;i--;){???????//定義i為product.length;當(dāng)i--為true的時(shí)候,執(zhí)行以下語句??(相當(dāng)于從尾遍歷到0) //????for?(var?i?=?0;?i?<?l;?i++)?{?//非簡寫模式1?,從0遍歷到尾 //????????for(var?i=l-1;i>=0;i--){????????//非簡寫模式2,從尾遍歷到0 ????????product[i].onclick?=?function?()?{ ????????????var?k?=?0; ??????????for(var?i=l;i--;){ //????????????for?(var?i?=?0;?i?<?l;?i++)?{???//非簡寫模式1,?從0遍歷到尾 //???????????for(var?i=l-1;i>=0;i--){?????//非簡寫模式2,?從尾遍歷到0 //????????????????product[i].checked?&&?k++;?????????//有幾個(gè)product被選中,k++就執(zhí)行幾次 ???????????????if(product[i].checked){???????//非簡寫模式 ???????????????????k++; ???????????????} ????????????} ????????????all.checked?=?l?==?k;?????????//先判斷l(xiāng)==k;?再將值賦給all.checked ????????}; ????}

stone310
TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
var?i=1; if(i--){ ???alert(i) }
?如上,當(dāng)i--為條件,判斷完后,i--相當(dāng)于執(zhí)行了一次;
?這里i--也是如此,如下:
for(var i=2;i--;){...}
?i=2,i--為true,判斷完后i為1,執(zhí)行語句;
?i=1,i--為true,判斷完后i為0,執(zhí)行語句;
?i=0,i--為false,退出循環(huán)
點(diǎn)擊展開后面1條
添加回答
舉報(bào)
0/150
提交
取消