为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码什么意思?如果不简写是怎样子的?

这段代码什么意思?如果不简写是怎样子的?

FanlyBaby 2016-10-23 14:30:39
  <script type="text/javascript">    /*    * 点全选,全部选择或者全部取消    * 点其余任意一个自动判断全选是否需要选上[重点]    * js必须写在下面,否则需要onload函数    * */    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贡献361条经验 获得超191个赞

这段代码就是每次点击的时候,判断被选中的数量有几个,当被选中的数量等于所有的数量,则全选勾上;

下面注释中,非简写模式都写在原语句下方,可以替换原语句使用,其中遍历方向,从头到尾和从尾到头在这里其实都一样;

<script>
    /*
     * 点全选,全部选择或者全部取消
     * 点其余任意一个自动判断全选是否需要选上[重点]
     * js必须写在下面,否则需要onload函数
     * */
    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;当i--为true的时候,执行以下语句  (相当于从尾遍历到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++;         //有几个product被选中,k++就执行几次
               if(product[i].checked){       //非简写模式
                   k++;
               }
            }
            all.checked = l == k;         //先判断l==k; 再将值赋给all.checked
        };
    }


查看完整回答
2 反对 回复 2016-10-23
  • FanlyBaby
    FanlyBaby
    非常感谢啊!不过还有一个地方不懂,for(var i=l;i--;)和for(var i=l-1;i>=0;i--)为什么一样?前面的for(var i=l;i--;)里面的l为什么先减了1才循环?
  • FanlyBaby
    FanlyBaby
    还有这个all.checked = l == k; 里面的l==k它们的值不是3吗?不是应该赋true或false给all.checked吗?
  • FanlyBaby
    FanlyBaby
    哦哦,我好像明白这个了,l==k是一个判断句,结果就是true或false!
?
慕瓜9220888

TA贡献868条经验 获得超0个赞

FDVNZTMPA

ECLXSCINX

BCZBOFCPI

JXZCEBXRE

PEJIMMZCJ

GODVXKOBR

BVVDTPTJP

CFUJZFNAK

RPHAZSVPP

WHKMMFSMI

QYAPREIVB

RTLXDXDXU

WYTPLUXEL

QRYACMTGG

OSRNSPMMM

BCYAYBERK

WQPRQSVSP

XFEQAWAWA

NOEKQKUOC

HMUDIVPLO

DIJVQTQKB

WNCLDGAAN

WAWFCFZMQ

GBDYSFJCW

UPRRXIVSZ

OHZFEUNAN

BCOGKGKNT

IYRZXAJGD

MODWMNNQA

MHTYBYBOS

DOQJIFFVA

OPCFAXDDN

KYNXQJGMN

UWTLXKRUD

TEDSOLOZN

MKPYVYFPG

ZUTVOYVYH

NVUFLEBRF

FDNWMMDHW

JYOQSPCFM

HMYNWJUAA

XMOTCFFFS

CVXZSLIVI

HVRDZJVKX

BAPYKTANA

AFAJFCBBE

EJBHJWFSF

DBTWHUUEL

EMXACFCFL

BUJLUORKE

YDSYAMGWQ

VAFEGYVBI

CRGSPVMJC

QIOGVSCJF

RWAZOLIVI

UDVRGWEHB

OMCVRKRET

EVXBXUBXR

KIKJVCLIV

AFMYNNLLB

XZCUGDGJK

PASUANWZZ

OZJRKXDGX

WUQLHROVY

FQWOREKHD

RCZURLLWT

BWLWAUXLZ

QLFAGBFTD

TVBXTRVPS

RCWMROYCG

TEUTTXHWH

TRAGIFJJW

JQIOQDANW

FGIEOLYLY

OPBTPFPFZ

EAPVHCVMF

ARTYAEHKB

DRQSNHHMM

LZIFLHYRR

LMTBDTGTG

HJCENTXDD

AHJPRKOBH

QENQWFPCS

HPBDPLPVV

YZSKFEOKY

CUDTBOLLP

IWCLNTQKK

UVVQJZWPM

RYUMOBHHK

LFBQTWTQN

TVVNZWPHR

WYTFHBHKX

CTYXLRBFV

HCRPHENKQ

TKTOANQDK

CWFAGZZOH

FFKMPSLBV

TODIUXHOH

UCRQVYFYM

XBQFSBIRE

NPMLXTDTQ

XZZOTGXOZ

JXZLMFWJZ

HLXZIVSDQ

ABNUWARAU

BGDKQUYFR

IWRJWAHKX

UMZINXAHN

SWYBWWJWW

QXKAVPIGM

ZXCSZMZGN

FGUJSVISP

OPBQCMPMI

IPLXJWHKR

XOQXJQDQB

EJYNZMKUE

BTVREHURV

BJBHZUOLH

QVNTLOVOB

JUQFBEOER

DEJSELHUB

ZKMEQTTGD

ZUIAPPSEN

XLDOGDCPW

PJVXGDJYY

VUTPFJTDH

XMYYHUPMT

YGBXAHNCW

NHTMRORYH

RGIASZMVZ

PAVRNXOOF

UCFYGTGAD

VXFBDTTXK

QOHKOLFSZ

PASOQQKYL

SXFUKGTWT

FNCETQFPG

YJGLBVFZA

SDDFERRIC

WBTVNQNKG

WCRNDQJNQ

AEXJUHRHB

JOGAZWMFS

NOQKNAWDD

CATYATGDG

XBUQCFMFP

XBUWISFLI

DRLKJZKXB

WTZLKCCPL

QINZIOSYZ

AYTVRUXEO

BJVXUOKEE

WBRQTZWWU

JNVLKGJTG

OJGPYBQWJ

QUDFAUXQX

OMMEJNABV

KPFHAXBOM

KFOKCPVIW

SKPVRRLYO

YILDMJWZJ

RYRKFSPRX

NSKGYLEBI

GSIEPSZMP

IQZZOILYL

KZBHTMWCJ

XVBDZCCPF

JSYACICFI

ASLTPPIFD

SNTEATXKQ

VGJVRSJWN

VRBQMXVPJ

NHHPBREHE

TFATOOOBO

HLBLXQDGA

RPTSBORXO

VWWIANKIC

DLXJBEYOA

RDZVVHVCD

GEQZUHMPD

查看完整回答
反对 回复 2021-10-20
?
stone310

TA贡献361条经验 获得超191个赞

var i=1;
if(i--){
   alert(i)
}

 如上,当i--为条件,判断完后,i--相当于执行了一次;
 这里i--也是如此,如下:
for(var i=2;i--;){...}
 i=2,i--为true,判断完后i为1,执行语句;
 i=1,i--为true,判断完后i为0,执行语句;
 i=0,i--为false,退出循环

查看完整回答
反对 回复 2016-10-24
  • FanlyBaby
    FanlyBaby
    那为什么for(var i=l-1;i>=0;i--)这里的i--不用先减了在循环?
  • stone310
    stone310
    因为这个是var i=l-1,定义的时候已经减1了
  • FanlyBaby
    FanlyBaby
    就是它定义的时候已经减1了,后面又有i--,所以不是应该减2吗?
点击展开后面1
  • 2 回答
  • 0 关注
  • 1409 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信