00:00
啊,然后我们还是来接着看咱们这个全选和取消全选,这个还上次做了一部分啊,还有最后还有后边这一部分,这我们说这种全选和取消全选,从需求上来讲就是分两部分是吧,第一部分有上面全选按钮来驱动用户点全选按钮,如果全选按钮点完之后选中了,列表中所有的插boss也都选中,否则如果是点完之后全选按钮是取消的,那么下边列表中的拆包S也都取消,这是第一部分啊,这一部分咱们前面给大家做过了,那这一部分跟咱们以前老师给大家讲的基本上没什么区别,嗯,做的话就是这跟我们以前那种思路基本上是一样。那就是说什么把事件加到权限按钮上,因为用户点的是它有它来驱动,那事件加到它上面。加载函数上边是什么?给他加一个单击事件,那么当时候用户一点他执行我们的代码,那我们把我们代码写到这个函数里边就行了,写到函数干码就是看他是不是选中的,他选中下面都选中他学校他时就都选,所以这个跟我们前面老我老师给大家讲的我没什么区别,好下边当了我们来看看第二组需求,第二个需求是有下边列表中的拆开boss来驱动说当用户点列表中任何一个拆boss的时候。
01:22
都是什么,都来看一看,是不是列表中插包都都选中了,如果都选中了,他也选中,全员按钮也选中,这样就一致了,嗯,你不能说下边都选中了,下边下边都选中,上边没选中,所以这个这种这种它就不一致了,再一个如果下边点完之后,点任何一个,只要有任何一个,只要有一个没选中的,或者都没选中。那他也是不选中也让他取消,如果他原来选也让他取消,如果他原来是取消,那就取消知道吧,所以下边我们来看看这个,那么有列表中的拆包S来驱动,下边我们来看看这个,那那看做这个的话,那我们这个什么,那我们做的话肯定是么有列表中的拆包S的驱动,那我们说那我们要把事件加到列表中的拆包。
02:13
所以下边我们来把它加入设备,那也就是说给列表中所有的拆包S都加一个单机时间,当用户点任何一个拆包S,列表中的插boxs都判断一下下边是不是都选中了,如果都选中,那么他也得选中,否则只要有一个没选中,那他也得取消,知道吧?所以下边我们来做这个事了,那来做这个,我们这样给列表中的拆掉包S加单机时间。那这列表中拆包子加单金实验的话,那该根据我们以前给大家讲的,那应该是怎么怎么来做。对是不是,那要选中他们,对选中列表中拆boss,拿到他们的解块的对象,掉事件函数就行啊好,这是我们这样,那我们来看看那这个地方,那这个地方,那首先选中列表中的拆开包,那这个地方是不是还是用那个父子选择器啊。
03:06
对,负责选组,那首先你要选列表中的插销boss,那你首先找列表,列表都在T包队里边,那我们直接找那个T包子,那T包队咱们那个T包的,咱们昨天已经用过了,那个T包的给他有有个ID了,那个ID就是提包的列表中,这是列表他下边的check box空格,那check box都是input标签,所以我们用标签选择器。啊,这个是input用标签选择器啊,其实这样写就行了,因为列表下边只有这种这些拆boxs是input菩萄这是这样写就行了,但一般来讲我们写的时候知道吧,为了可读性更好一些,那我们还得这种用这种属性过滤一下,去找那些列表中的input标签。那列表中哪些音input标签type等于是吧,拆个boxs了,那些音input标,这是列表中所有的拆boxs,这样我就选中了,选中之后我就拿到这些列表中的所有所有拆boxss的解这个什么解块的对象了。
04:17
拿到之后下边调事件函数加单击事件,还有什么可乐一口,然后呢,这个地方我们来这个什么,调完之后在这边传个参数,那传参数,这个参数我说本身是个函数表示,当列表中选中的这些check boxs列表中插box。任何一个拆boxs只要发生了单机事件,都会自动触发这个,那我们把我们的代码写在这里边就行了,那写在这里边,我们在这里边干什么事儿,那就是判断是吧?列表中的拆个boxs是不是都选中了,如果都选中了,那全选钮就能选中。否则只要有一个没选中的,那全选钮也让它取出知道吧,所以我们这样,那来看看那判断一下,那是如果是吧,如果列表中的列表中的啊所有check boxx知道列表中所有拆中,判断一下是不是都选中,都处于选中都选中,都处于选中的状态,那这个时候则则全选按钮也让他选中,全选按钮也选中,也让他选中,选中知这吗?那关键是大哥,我们如何判断列表中的所有的插boss都选中了,那怎么判断啊。
05:38
大家怎么判断这个列表中这一拆boss都选中了,怎么判断?对,列表中所有拆开包S是不是我们能拿到,那又能拿到什么?列表中所有选中的拆开包子比一比是不是就可以了,看他们的数量是不是一样,这样就行了啊,其实这种方式也可以是吧?其实我们以前老师给大家讲过,是不是还讲过另一种方式?
06:06
判断哪哪些拆boss是不是都选中了。大家以前学过一种方式,是哪一种方式?以前就循环,然后加加看。啊啊,你们你们也是看这个总长度是吧,所我这样你看我这样行不行,我能获取到列表中所有的拆包,是不是能获取到了,对我就这么来获取的。这样获取到,大家看这是不是一个解块对象,解块的对象,但是这个解块的对象,它里边是不是包含一个数组。这个数组里边对有那些所有被选择的这些元素盗用对象组成的数组,是不是这个意思,就这这大哥,我这么选择列表中所有的拆包S呢?这样是不是能拿到一个什解块对象,这个解块对象里边包含一个数组,这个数组是有那些所有选择器被选中的这一元素都是对象做组成数,我是不是可以便利这个数组啊。
07:06
那能能能变利这个速度吗?对,能变利,那变利这个速度每变出来一条,我就是看看它的拆解的属性值是不是等于出。如果便历完了,大家都等于出,这个时候说不定什么都选中了,是不是这个意思,那让你全员按钮是不是也也让他选中就可以了,是吧?否则在便利的过程当中,只要遇到任何一个拆拆的属性值是false,这个时候是不是说明至少有一个没选中呢?那就往下就不用变利了,那就直接把全选按钮变成取消状态是不是就可以了?对这样这样做,你们以前这种这种方这种做法没做过吗?没做过比方啊。以前你们前面阶段应该是讲的都是这种做法,是当然你们没讲这种是吧,那没讲这种咱们也不不多说了,因为这种比较麻烦,是我们不推荐的一种方式,但是大家知道这个思路,那吧,我可以便利这个数独,那么每次便利出来一个拆包S都看上拆属性值是出入还是falsex是吧?啊如果是true是吧?呃,如果如果便利完了都是true,那这个时候的话,那就那就都选中了,全限按钮选中是吧,否则只要有一个是FOX,那就不用不用再往下遍利了,那就至少有一个没选中了,那就全选就也取消就行了,知道吗?啊所以这语法大家都都做过,懂吧,都大家都写过,所以这种方式呢比较麻烦,所以这个思路上,大家应该是这么去分析去应该这么分析啊,但是我说这种方式比较麻烦,比较麻烦怎么呢,我们就准备什么,采用另一种方式是吧,这种思维方式不一样,所以它决定你的代码也不一样,是吧,那我们用另一种方式什么,那用另一种方式,比较简单的方式哪一种?
08:51
不,就这样,就像大家说的那个,我可以通过选择器来获取列表中所有的材料包袱。那也可以通过选择器获取列表中所有被选中的传个包,那这个时候我们拿到这两个解块对象里边都包含一个数组,这个数组呢,都是有那些这些选择题选选择的那些元素刀对象和总的数组,那我就看看他们的这数组的长度是否一样就行了。如果数组长度一样,那说明。
09:22
那都选中了,为什么?因为所有的拆boxs和被选择拆boxs一样,那这个时候那那就那就是什么全选中了,否则如果不一样,长度如果不一样,那肯定至少有一个没选中的,那我们就把它取消就行,知道吗?所以我们就准备用这种方式了,用这种方式啊,那用这种方式那我就要获取两个两什么两类元素了,第一类获取列表中所有的拆bos,那我来获取,那这个地方获取是不是大家咱们前面已经获取过了啊,这是列表中所有的插个包S,然后我再获取列表中所有被选择的,被选中的插个包S怎么办呢?对这个地方是不是加个冒号啊,冒号冒号加一个什么拆开,这样就过滤了,这个是列表中所有的拆包子,列表中所有被选择拆包,我们说这俩都是解块的对象,解块的对象大家都知道,解块的对象里边包含一个数独,那个数独是有那些所有就他这个选择剂选中的所有的。
10:22
还有元素盗墓对象所组成速度知道吧?啊,他选择了几个元素,那那个数组里边就有几个是吧,就有几个数组里边就有几个元素,是他选择了几个标签是吧?它就有几个元素,同样下边这个也一样,所以我们就拿到这个数组的长度,看看他选中了几个差异box,以及它选中了几个差异boxx,那么一比较大小长度就行了,那好,那我说那大看那比较大小,那拿到他们的长度大看怎么拿。点么对吧,点size点三啊获取那个什么选中的元素,盗墓贼项所组成数组的长度,点塞点点size,那比较这俩这俩什么size就行了,那比较大小怎么比啊,对A它然后呢,比较两个值是否相等咋办啊对双等号,我们前面给大家说了,在那么GS里边它是弱类型的语言,不管什么类型的数据,只要比较是否相等都是双等状,那如果它俩相等,那这么这里边是出是出,那就这种标准,那说明它俩只说明列表中所有的这泵都选中了,那都选中了,那让全选按钮也选中,那全选按钮也选中怎么办?
11:44
那就把全选按钮的那个拆开的属性值是不是设置出就行了,对那全选按钮的拆开的属性值,那设置它的拆属性值,那首先拿到全选按钮的结块对象,那它的全选按钮的解块对象,那我这什么通过选择选择器,我们说我们前面给全选按钮加了ID了,那用ID选择器行了,那它的ID就这个咱们前面已经加过了,然后把它拆开的属性值设置出,怎么设置,对prop设置它的属性,对叫拆头属性,拆头属性把它设置成to就行,这这是我们这那否则是吧,如果不相等它俩的数量。
12:29
对,那就是么,把它的值上报出去,对,如果否则如果不相等是吧,如果是吧,啊至少至少列表不用拆报子,至少有一个啊,有一个没有啊选中没有选中啊,则那么则全选按钮也让他取消,则全选啊。和全选按钮也取消啊,取消这样就行了,如果列表中的车要报错。
13:10
拆false啊,然后呢,至少有一个没选中的也取消,那也取消的话,那我们这个地方那就把它拆了损设成false,那我们这个PP设成否,设成这样的话,我们这个思路就可以了。啊,这是我们那个经过,我们这是我们这个思路,是我们以前给大家讲过的这个思路,但这种方式大家会看到什么,这种这种这种方式虽然思路是正确的,但是不是演示肯定不通过了,这啊这种方式不通过,那你看啊,你这个地方运行你看。这样这样实现不了。呃,那个思路没问题,思路没问题,语法有问题,哪个地方就这个语法有问题知道吧。这样加试卷加不上,你对这样加试卷加不上。
14:02
不。啊,然后呢,这个地方来你看看啊,张三写完之后都得测一下啊,包括大家以后到工作功开发,每做一个功能自己都得先测一,你别直接指望着那些测试人家帮你测知吗?测试人家帮你测他什么,你到时候最后都麻烦了,反正你早晚都得什么测,现在你做完测好测呀,你比如说大家我们这个地方来,这是我们以前做的,那我点下边这个,你比如说大哥我点下边任何一个,按理说都会处罚我第二个那个视角,那我就判断下边是不是都选中了,我一点它取消了,大家看看下边有一个取消,按理说上边这个也取消了。当时他这个没去知道吧。没学他实现不了就实现不了,这为什么实现不了,那这些是吧,那为什么实现不了,假如说你遇到这种情况,诶,我写的没问题啊。你看你的代码写的没问题,但是它功能实现不了,那你怎么办呢?所以你得调试试,那像这种情况下的调怎么调。
15:01
所以大家会调代码是吧,调咋调。对F12是吧,F12,那你再看看,那F12都都看看了吧,看你哪个代码是不是写错了,知不知道吗?你看看写错了,你看着吧,F10说这你代码有货吗?你点一下,你看他有货吗。没错是吧,代码也没错是吧,语法我看着肉眼看也也没什么问题,对,那怎么办啊。啊对,大家看对我这个什么,加上试卷之后,我感觉我的逻辑没问题。但是我可能,那么他为什么结果没出来,他如果按照我的逻辑执行,按理说应该能出来这个结果,但是他没出来怎么办?我看我的代码又没问题,那怎么办?那你就要怀疑了,你这个代码它到底执行没执行,如果执行了我写的没问题,他一定结果会出来,但是他结果没出来,那他有可能没执行我的代码。
16:01
那没那么说,我这个代码到底执行没执行,那怎么办呢?我怎么知道他执行没执行,他也不浏览器也不会告诉我啊,我一点一下没执行,他告诉你,你这代码没执行知道吧,他不他不可能告诉你,那你那你怎么你怎么能知道这个代码执行没执行。大棒。那咋办?对来我们最最最什么最原始的一个调试的方式也是最有效的是吧,加一个什么,对这个我那个代码执行之前,我先跟他什么谈这么一个东西,知道跟他谈A一下任何一个东西,就看能不能。如果能alert,说明我的代码一定执行了,如果这个LT都没弹出来,那说明什么代码肯定就没执行,就为什么是这样的,因为我们的程序都按顺序执行的,从上到下解释执行,如果这个能执行呢?那中间没有任何代码,我这个代码一定能执行的,那他要如果没执行到,那可能我这个代码写错了。
17:05
那如果说这个地方都没弹出来,那肯定我的代码可能就没问题,就说明我的代码没执行,来家看吧,那你看看这个地方能弹出来吗?打我们这个来谈一下,你看看,所以说大胖,我说你只要是觉得你的代码没问题,那你就看看你的代码能不能执行,到是能不能直行道,怎么来判断,从前面耳一下你就知道了,那你说老师万一这个耳出错了,耳这种一般不可能出错,你就写个A,如果不能出错吗?他不可能出错是知道吧,所以说他我说就就写一个最简单的代码,如果这个最简单的代码能执行了。那说明我的代码后边代码一定直行了,直行了那结果没出来,那说明我的代码错了,如果这个都没执行出来,那我们说那一定是它前面的哪个地方出问题了,那你看我这个耳朵能执行了一两啊,你看耳re都没执行,那说明我的代码可能这个问题可能就不是我的代码会引起的。
18:03
那就是什么,那那那就是前面了,这个都没执行,那就前面有问题,前面有问题哪个地方。对,那就是这个地方了啊,那就是这个地方就是就是给元素加事件这一段代码写错了,那给元素加事件这个代码写错,那你再看一下这个代码有问题吗?你看啊,我根据我们以前讲的语法,给一些元素加视角,选中他们拿到他们几块的调视角乘数传参数,那我这个写的没问题。看着写的这个种没问题,但是其实呢,我们这个语法,我们给元素加视角,这种语法就这种拿给什么元素加上视角,获取他们结构一样调视件函数,然后呢传参数,这种方式只是解宽瑞给元素加视角的一种方式,这是解宽RY早期的版本推出来一种方式,但是这种方式我们说有局限性,懂有局限性,就这种方式,它只能给某一些特定的元素加上试卷,像我们这种元素加设角加不上了,知道吗?
19:05
这时候我们要这样,所以那这个时候大家说你这个加试件这能转法出问题了,所以你就要想一想,你以前学的使用解块水给元素加试件的语法都有哪些语法,你我回顾一下,梳理一下你就知道了,那个使用解块给元素加试件,那有哪些方式呢?就这样啊,别说使用解块,就说在整个液面当中不但使用解块位,然后使用别的方式给元素加试角也也考虑进来,那大家可以总结一下,在页面中改那个给我们的元素或者给标签那吧,绑定或者添加事件,添加事件的这些语法有哪些语法啊。那有哪些语法,那你总结一下大看大家学的给元素在页面上给元素加事件的这些语法中,在页面中的,在页面中给元素加视角的语法,那我们一开始加视角的语法,大家学的最原始的一种方式,就是什么样的方式,对叫on是吧,什么什么在标签上面是on什么什么的这个加装么这么一个属性,然后后边呢。
20:17
对,是不是一个什么一个函数,是不是这样的,知道么?这是这种方式,这是最原始的方式,就是在什么在元素上,那么叫使用,这么使用元素的,那么叫事件属性吗?事件属性。事件属性在挺高。啊就这了,那说那怎么它的语法就这样在元素上面,然后呢,加这么一个属性,这个属性什么样的,前面以盎打头的,后边就是什么视件的类型,那如果是我们举个例子,如果是单击事件,那这里边叫什么克雷什么,如果是双击事件,那就什么DB克雷是不是,如果是什么就是获取焦点事件啊什么focus斯是吧,呃是吧,然后呢,失去焦点时间呢。
21:10
对,昂普勒是等等这些是吧,都可以什么加上这个时间,然后后边定义一个函数,那么当这个元素上面只要是加了这种这种属性了,当这个元素上面一旦发生指定的事件啊,它会自动触发后边这个函数,知道吧,这是这种方式,这是大家学的时候,学GS的时候学的最原始的一个属性,最原始的一种方式给元素加持的,但是这种方式我们说是我们大家不推荐的,就为什么不推荐。那就我说它加到标签上面,加到元素上面了,我们的页面我们都知道,页面有可能会很长,有的时候那一个页面可能几百行,甚至上千行,那里边都是说一些标签,你要如果把这些代码加到标签上面,我说后边是GS代码,那把GS代码跟标签ATM2这标签代码混在一起,我们以后页面会很乱,不好维护,所以这是我们不推荐的。
22:09
这是我们不推荐的,但是他一定能加上视角,知道吗?这种方式好,这是所以说他看我们说,那我们又什么,到后来什么解块位推出了一种方法。跟这种加视角状方法相对应的一种方法叫什么?使用解块对象,然后呢来那么使用结块对象来给元素加视角,就使用解块对象,使用解块的对象啊对象,然后呢给元素,那么加视角,使用解块对象,那使用块对象到底什么样子的,那我们说那就是咱们传统的用那个,传统的用那种,那怎么样呢?那知道你想给哪个元素或者给哪些元素加设的,首先选中他们,拿到他们的几块对象,那如何选中它们对选择器。是吧,各种各样的选择器都行,知道吧,只要是什么用选择器给那把拿到那些元素解开对象去,然后呢,后边调试件函数,这个事件函数,就这这个事件函数,我就简单就这么写了,叫做事件函数,这叫事件函数,然后呢调函数呢,带参带这个小括号。
23:17
小括二式函数的标志标记,然后呢这然后呢加一个分号,这样其实这就一段,这就一,这就一行GS代号GS,然后呢调到时候呢,后边给他什么传一个参数叫方式,然后呢,我们把我们的代码写到这里来就行,这啊这样这种方式知道,然后呢把我们的JS代码写到这边行。那以前我们的阶代码就写到这个函数里边知道,那这个地方给大家强调一点的时候,我们说它这些事件函数给前面第一种方式,这些试件属性是相对应的。一个事件属性对应一个事件函数,而且大小写都不带变的。
24:01
那么以前单击事件可雷克,那这个地方事件属性是可雷克,然后呢,它这个事件的函数也叫可雷克,双击线DB可雷克鼠标悬停是下叫Mo overver,它这也是moover鼠标离一开始讲moo它也moover就一一对应的,事件属性和事件函数是一一对应的,知道吗?而且大小写都不带边的是吧,那我们把大码写到这边就行。这是我们说到这种方式啊,这是这才是我们比较推荐推荐的一种方式,那为什么?因为这本身就是JS代码,那么JS代码将来都会写到GS代码里边,我对我们而言一般都是入口函数里边,那这样的话我将来我页面比较整洁,GS代码写在GS此规则标签里边,ATL元素写到T包写到那个body标签里边,这样的话我的代码就分析的比较清晰。以后维护和维护哪儿出问题,到哪儿找代码就行了,知道吧,所以这是我们比较推荐的一种方式。
25:01
好,这是我们说的这,但是这种方式我们说是解块,RY早期的版本推出来一种方式,可以给元素加上视觉,但是它有局限性,它有什么样的局限性,我们知道这是它的局限性,什这种方式只能啊,只能给,只能给,只能给哪些,只能给那些固有元素就固有元素。让他添加食品。添加式的啊,固有元素添加式什么叫固有元素这个东西有个固有元素是吧?固有元素什么意思?固有元素其实是个相对概念,什么是相对的,相对于什么?就是相对于给元素加事件的这个事件函数调用这个代码加事件的这个代码来说的。什么意思?就是说当加世件的这个代码执行的时候,如果这个元素在页面上都已经加载完了,都已经存在了,那么这种元素对于这种加世件的这个代码来说叫固有元素,这这这样对吧,他说这种如这么当是吧,这是吧,当那么采用什么?调用视件函数,调用视件函数函数,然后呢,给元素添加事件十啊在这个时际,如果啊,如果,如果这个元素,如果元素已经已经生成了,或者已经加载完成了,已经在页面上已经生成了,已经生成,则这些元素,这些元素,则这些元素叫做固有元素,固有元素。
26:50
这是我们说的这固有元素,如果是这样的元素,用这种方式能加上。就加试卷的时候,加试卷的这个代码,如果如果这行代码执行的时候,这个元素都已经在页面上都已经存在了,这个时候这些元素能加重。
27:09
就加事件代码,如果已经存在了,这样能加装。那你说除了固有元素,那还有哪元素跟固有元素相对应的一个元素,一类元素叫动态生成的元素叫动态生成的,动态生成元素叫动态生的元素,什么意思?那就是这样,当调用这个事件函数给元素加事件这个函数的时候,调用这个函数的时候,那如果啊,如果这个元数呢?元素在调这个函数的元素还没有生成,生成还没有生成是调完这个函数都调加试下这个代码,调完了到后来才生成的元素,我们把它叫做这些元素叫则啊,还没有生成是调用完之后,后来生成的元素,后来任何一个时机生成的元素,元素都叫做什么叫做,故叫做动态生能元素。
28:16
叫做动态生成的元素了。这种元素这种什么,用这种方式就加不上了。当然了,知道吧,你比如再看我们这个元素,你比如说我们这个加持角,首先我们回过头来,来看看第一个,再看来看看第一种需求,给这个什么给全员按钮加视角的时候,我们用这种方式加到视角,用这种方式加视角,它就能加上,为什么能加上,就相当于相当于什么给这个元素加世界的这个,给这个什么全选按钮加世界这个代码,哪一个代码,就这个代码给全员按钮加数件这个代码,在这个代码执行的时候,这个元素在页面上都已经生成了,就这个全员按钮已经生生成了。
29:07
所以给它加试件能加上,给他能加什么,那你说怎么生成了,但你想再看我们加试件的这个这个事件函数,这个代码调用的时候。那个全选二九生成了吗。对,全限按钮在页面上面已经生成了,等于为什么生成,你分析一下权限按钮在页面上什么时候生成的。已经写死了,对,已经写死了,是不是当页面加载的时候,那个全员按钮就已经生成了,生成了,那我这个函数什么时候掉的。对,在入口函数里边调的入口函数是不是当整个页面所有元素都加载完了,那这个什么入口函数才直才直行,那是不是才调到它,所以那个全圆按钮是不是一定一定是在这个函数加给它加实角这个函数之前已经生成了。
30:01
所以这种方式加试卷就能加上咱们第一种需求。当然,你再看看我们第二种需求,当我这个代码给列表中的叉bos加试卷的时候。这个加事件的这个事件函数调到时候列表中的拆box生成了吗?那生成了吗?你要如果一眼看不出来,那你就分析一下,大家首先分析一下列表中的check boxs什么时候生成的。对,是不是我们做扉页查询的时候,在非页函数里边动态拼出来的,动态拼出来的哪哪在哪个地方拼出来就在这个,就在这个世界,就在这个分页查询的函数里边,大把数据查出来之后,然后呢,都返回了,是不是我一便利把这些差F包组都拼出来了,拼出来那大家我问你了,那这个代码什么时候生成的。
31:01
他最早生成债券代码什么时候生成的?页面对页面加载完之后,显示所有数据的第一页的时候是不是生成的,那所有数据的第一页的时候生成在哪个地方生成的,我是不是在这个地方,我这个地方,当页面加载完一调它,然后呢,它到那么执行到它了,执行到它了,他就到后台去查,查询完了之后是不是我就拼出来了,拼出来了。哎,拼出来,那这个拼出拼出来好像是大家你看到了吗?在这个地方先调动,按理说先生成的,那我们这个地方它都生成了,我在这个地方我也给这些元素加事件,好像在调它的时候,那些差的包子是不是好像都已经生成了。但是你再想一想,生成了吗?那你说先调的那个非页查询的函数,就应该先生成先生成拆包和,然后再调你这试件函数,按理说应该这应该是这样的,但你再想一想,调查的时候是先调的,他先调查,调查的过程当中,大家看是不是在这个地方向后台发了一个事,是发了一个异步请求啊,异步请求去查询数据,查数据,大家异步请求什么意思?
32:18
就是说异步请求是当你这个调这个事件的时候,调调这个函数的时候,往下边执行,执行执行到异步请求的时候,这个异步请求到后台去查询的时候,这个代码不会等到这个响应回来之后才会,那么才会继续往下走,这个异请求发送的过程当中,这个函这个什么GS函数不会等响应回来会一直往下走,那一直往下走,那这个函数就走完了,走完了之后怎么继续往下走,但是这个函数里边向后台发的异步请求还在后台查数据呢。那这个函数会一直往下走,一直往下走,走到这么走到这个地方,走到这个地方,那这个什么后台的响应信息还没回来,还没回来,那这个什么列表还没拼成,拆个包子还没拼过来,还没拼成,还没拼成,那我这个地方是吧,我就执行完了,执行完了,那这拆个包还没生成,那等到我执行完之后,他这边查出来了,他才生成拆个包子,那这个时候那些新行成的拆个包子他叫什么,他就加不上试件了。
33:25
知道吗?用我们这种方式加不上,知道吧,哎,你说老师不对啊,啊,那在这个地方调的时候,然后呢,调的时候他是上后台插,那你们中间隔了这么多代码执行到他了,还没查回来吗?还没查出来一定没查回来,为什么一定没查回来,但你想一想向后来发请求的时候。他得经过多少步骤,首先通过网络向后台服务器淘们开的发个请求,那发个请求的话,那这个请求通过网络,它得连接服务器,那服务器连接了之后,执行我们的后台的ctrler,这个CTRL那干什么,还得去访问数据库,然后呢向数据库发送搜数据,然后呢到数据库,数据库里边数据大家都知道存到磁盘上边,那么它这么是到磁盘上去找数据,找出来之后呢,还得什么返回响应信息生成阶段,磁符串导网法,这个过程其实是很长的。
34:20
很漫长的一个过程,那对于我们前端的GS代码,这些代码执行的就太快了,这些GS代码都是以这种电流的速度来执行,它不需要访问数据,不需要访问磁盘,不需要经过网络,就直接瞬间往下边执行了,所以当这些接似算法执行完的时候,那也这种什么后台查数据还肯定还没查出来的,到后台他都执行完了才查出来,然后才生成查bos,大家能理解这个意思吗?能理解吗?这个这个能理解吧,可以吧,对就这所以大看我说正是因为什么是异步请求,所以这个想什么,前面这个代码它都什么不等不等待响应器一回来就一直往下走了,就这意思,这是我们知道。
35:19
好,这是我们我们说的这个改,改成同步的就可以了,对改成同步的这个什么,这个函数掉的时候,向后台发请求的时候,这个代码就就等着了,就不会再往下走了,等到这个函数都执行完了,响应信息都回来了,这个时候嘛,这些代码才继续往下走,大家能理解这个意思吧,对就这样子,所以说大家我说这种方式我们说。它就加不上了,对于这个函数而言,对于我们说的这个函数而言,加世件的这个函数掉到时候这些元素都还没有生成的,对他来说是动态生成的元素,后来生成的用这种方式就加不上了,知道好这时候我们要说到这那加不上的吗?所以说呢,我们说后来我们说解块又推出另一种给元素加视角的这种方式,知道吧。
36:15
好,这时候我们来找哪一种方式,就这种模式还是使用j query,使用j query啊,使用j query给元回加值,使用j query加世界的,用哪一个解que的这个函数就on这个函数,使用解块的on函数,然后呢给元素加视角。就这种方式,这种方式我们说加试件的时候,我们说它那就能够给动态生成能量素加试。那他怎么,他是怎么加的,他的语法是这样的,他的语法就稍微比这种方式加十件语法稍微复杂一点,那他的语法就这。
我来说两句