自动点击复选框无效的问题
自动答题的脚本,答案是固定的顺序是随机的,所以建了数组保存答案,比对到相同就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 18:29 编辑
你可以尝试下把$(dxuanxiang).click()
改写成
$(dxuanxiang).click()
或者
setTimeout(()=>{$(dxuanxiang).click()}) 本帖最后由 steven026 于 2022-8-6 11:30 编辑
var改成let
click事件是异步的,对于异步不能用var要改用let,
具体原理可以参考一下for循环中var和let的区别_双星。的博客-CSDN博客_for循环var和let区别
steven026 发表于 2022-8-6 11:18
var改成let
细心..
第一次知道click是异步 李恒道 发表于 2022-8-6 14:38
细心..
第一次知道click是异步
触发事件都是异步的吧
不然如果是同步的话,随便交互一下就会阻塞页面,像alert()、confirm()一样 本帖最后由 yazza 于 2022-8-6 18:22 编辑
steven026 发表于 2022-8-6 11:18
var改成let
改成这样还是不行啊
结果跟之前还是一样的
steven026 发表于 2022-8-6 18:25
你可以尝试下把$(dxuanxiang).click()
改写成
$(dxuanxiang).click()
第一种效果没变化,第二种完美解决了。 steven026 发表于 2022-8-6 18:25
你可以尝试下把$(dxuanxiang).click()
改写成
$(dxuanxiang).click()
还得是大佬啊,这个setTimeout我昨天也试过把他框起来,但当时没解决问题 steven026 发表于 2022-8-6 11:18
var改成let
这个坑,学到了 yazza 发表于 2022-8-6 18:41
还得是大佬啊,这个setTimeout我昨天也试过把他框起来,但当时没解决问题
正常模拟点击就是$(selector).click()
但是某些页面的事件监听可能做了些特殊处理,没法正常触发,我以前遇到过一个react页面也是这样:
控制台输入$(selector).click()可以触发,但是放到函数里同步执行就不会触发了。
后来我尝试了很多方法发现用异步方法就能触发,最简单的异步方法就是包一个0秒setTimeout
具体原理不是很清楚,应该是和页面的事件监听有关,可能需要真大佬来解答了
页:
[1]