yazza 发表于 2022-8-6 02:49:26

自动点击复选框无效的问题

自动答题的脚本,答案是固定的顺序是随机的,所以建了数组保存答案,比对到相同就click()
实际用的时候单选题没有问题,多选题每道题就会只勾选最后比对到的正确选项,前面的会选不上。第一次接触这个,查不出问题,希望大佬帮忙看看。

```
$('.question-title').each(function(index, element) {
                let dxuanxiang=$(element).find('.el-checkbox-group .el-checkbox ' )
                for(var i=0;i<dxuanxiang.length;i++){
                  var a=$(dxuanxiang).text()
                  if(DDA.includes(a,0)){
                        $(dxuanxiang).click()
                  }
                }
         });
```

效果是!(data/attachment/forum/202208/06/024557s5ypo5olspflpzwl.png)
只有最后一个被勾选
网页源码上也只有最后一个有is-checked这个属性
!(data/attachment/forum/202208/06/024740jbvtop9kpt219s4k.png)

steven026 发表于 2022-8-6 02:49:27

本帖最后由 steven026 于 2022-8-6 18:29 编辑

你可以尝试下把$(dxuanxiang).click()
改写成
$(dxuanxiang).click()
或者
setTimeout(()=>{$(dxuanxiang).click()})

steven026 发表于 2022-8-6 11:18:17

本帖最后由 steven026 于 2022-8-6 11:30 编辑

var改成let




click事件是异步的,对于异步不能用var要改用let,
具体原理可以参考一下for循环中var和let的区别_双星。的博客-CSDN博客_for循环var和let区别

李恒道 发表于 2022-8-6 14:38:03

steven026 发表于 2022-8-6 11:18
var改成let




细心..
第一次知道click是异步

steven026 发表于 2022-8-6 15:16:45

李恒道 发表于 2022-8-6 14:38
细心..
第一次知道click是异步

触发事件都是异步的吧
不然如果是同步的话,随便交互一下就会阻塞页面,像alert()、confirm()一样

yazza 发表于 2022-8-6 18:20:47

本帖最后由 yazza 于 2022-8-6 18:22 编辑

steven026 发表于 2022-8-6 11:18
var改成let



改成这样还是不行啊

结果跟之前还是一样的

yazza 发表于 2022-8-6 18:39:59

steven026 发表于 2022-8-6 18:25
你可以尝试下把$(dxuanxiang).click()
改写成
$(dxuanxiang).click()


第一种效果没变化,第二种完美解决了。

yazza 发表于 2022-8-6 18:41:03

steven026 发表于 2022-8-6 18:25
你可以尝试下把$(dxuanxiang).click()
改写成
$(dxuanxiang).click()


还得是大佬啊,这个setTimeout我昨天也试过把他框起来,但当时没解决问题

王一之 发表于 2022-8-6 18:54:29

steven026 发表于 2022-8-6 11:18
var改成let




这个坑,学到了

steven026 发表于 2022-8-6 19:04:33

yazza 发表于 2022-8-6 18:41
还得是大佬啊,这个setTimeout我昨天也试过把他框起来,但当时没解决问题

正常模拟点击就是$(selector).click()
但是某些页面的事件监听可能做了些特殊处理,没法正常触发,我以前遇到过一个react页面也是这样:
控制台输入$(selector).click()可以触发,但是放到函数里同步执行就不会触发了。
后来我尝试了很多方法发现用异步方法就能触发,最简单的异步方法就是包一个0秒setTimeout

具体原理不是很清楚,应该是和页面的事件监听有关,可能需要真大佬来解答了
页: [1]
查看完整版本: 自动点击复选框无效的问题