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

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

[复制链接]

该用户从未签到

1

主题

4

帖子

5

积分

助理工程师

Rank: 1

积分
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的每日心情
    慵懒
    2 小时前
  • 签到天数: 56 天

    [LV.5]常住居民I

    5

    主题

    119

    帖子

    269

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    269

    荣誉开发者猫咪币纪念章

    发表于 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的每日心情
    慵懒
    2 小时前
  • 签到天数: 56 天

    [LV.5]常住居民I

    5

    主题

    119

    帖子

    269

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    269

    荣誉开发者猫咪币纪念章

    发表于 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的每日心情
    开心
    2 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    354

    主题

    3128

    帖子

    3129

    积分

    管理员

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

    Rank: 10Rank: 10Rank: 10

    积分
    3129

    猫咪币纪念章国庆纪念章中秋纪念章荣誉开发者家财万贯管理员

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

    细心..
    第一次知道click是异步
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

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

    [LV.5]常住居民I

    5

    主题

    119

    帖子

    269

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    269

    荣誉开发者猫咪币纪念章

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

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

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    5

    积分

    助理工程师

    Rank: 1

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

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

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    5

    积分

    助理工程师

    Rank: 1

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

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

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    5

    积分

    助理工程师

    Rank: 1

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 02:52
  • 签到天数: 69 天

    [LV.6]常住居民II

    153

    主题

    2029

    帖子

    2157

    积分

    管理员

    Rank: 10Rank: 10Rank: 10

    积分
    2157

    猫咪币纪念章热心会员活跃会员突出贡献三好学生中秋纪念章国庆纪念章管理员家财万贯

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

    这个坑,学到了
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

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

    [LV.5]常住居民I

    5

    主题

    119

    帖子

    269

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    269

    荣誉开发者猫咪币纪念章

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

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

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

    使用道具 举报

    发表回复

    本版积分规则

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