上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

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

[复制链接]

该用户从未签到

1

主题

3

回帖

5

积分

助理工程师

积分
5
发表于 2022-8-6 02:49:26 | 显示全部楼层 | 阅读模式
悬赏20油猫币已解决

自动答题的脚本,答案是固定的顺序是随机的,所以建了数组保存答案,比对到相同就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[i]).text()
                    if(DDA.includes(a,0)){
                        $(dxuanxiang[i]).click()
                  }
                }
           });

效果是image.png
只有最后一个被勾选
网页源码上也只有最后一个有is-checked这个属性
image.png

最佳答案

查看完整内容

[md]你可以尝试下把$(dxuanxiang).click() 改写成 $(dxuanxiang)[0].click() 或者 setTimeout(()=>{$(dxuanxiang).click()})[/md]
  • TA的每日心情
    慵懒
    12 小时前
  • 签到天数: 791 天

    [LV.10]以坛为家III

    31

    主题

    551

    回帖

    1540

    积分

    荣誉开发者

    积分
    1540

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2022-8-6 02:49:27 | 显示全部楼层

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

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

    已有1人评分好评 贡献 理由
    王一之 + 1 + 1 赞一个!

    查看全部评分 总评分:好评 +1  贡献 +1 

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    12 小时前
  • 签到天数: 791 天

    [LV.10]以坛为家III

    31

    主题

    551

    回帖

    1540

    积分

    荣誉开发者

    积分
    1540

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2022-8-6 11:18:17 | 显示全部楼层
    本帖最后由 steven026 于 2022-8-6 11:30 编辑

    var改成let


    微信截图_20220806112213.png

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

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 193 天

    [LV.7]常住居民III

    710

    主题

    5881

    回帖

    6704

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6704

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2022-8-6 14:38:03 | 显示全部楼层

    细心..
    第一次知道click是异步
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    12 小时前
  • 签到天数: 791 天

    [LV.10]以坛为家III

    31

    主题

    551

    回帖

    1540

    积分

    荣誉开发者

    积分
    1540

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2022-8-6 15:16:45 | 显示全部楼层
    李恒道 发表于 2022-8-6 14:38
    细心..
    第一次知道click是异步

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

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    回帖

    5

    积分

    助理工程师

    积分
    5
    发表于 2022-8-6 18:20:47 | 显示全部楼层
    本帖最后由 yazza 于 2022-8-6 18:22 编辑

    改成这样还是不行啊
    P55C}K@3I~K)}RD4[J)O7RA.png
    结果跟之前还是一样的
    image.png
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    回帖

    5

    积分

    助理工程师

    积分
    5
    发表于 2022-8-6 18:39:59 | 显示全部楼层
    steven026 发表于 2022-8-6 18:25
    [md]你可以尝试下把$(dxuanxiang).click()
    改写成
    $(dxuanxiang)[0].click()

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

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    回帖

    5

    积分

    助理工程师

    积分
    5
    发表于 2022-8-6 18:41:03 | 显示全部楼层
    steven026 发表于 2022-8-6 18:25
    [md]你可以尝试下把$(dxuanxiang).click()
    改写成
    $(dxuanxiang)[0].click()

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    305

    主题

    4162

    回帖

    4034

    积分

    管理员

    积分
    4034

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-8-6 18:54:29 | 显示全部楼层

    这个坑,学到了
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    12 小时前
  • 签到天数: 791 天

    [LV.10]以坛为家III

    31

    主题

    551

    回帖

    1540

    积分

    荣誉开发者

    积分
    1540

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

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

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

    具体原理不是很清楚,应该是和页面的事件监听有关,可能需要真大佬来解答了
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表