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

请问大佬如何避免重复添加addEventListener

[复制链接]
  • TA的每日心情
    奋斗
    昨天 06:58
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    11

    主题

    51

    帖子

    66

    积分

    初级工程师

    Rank: 4

    积分
    66
    发表于 2022-5-23 09:11:57 | 显示全部楼层 | 阅读模式

    我开始尝试用一个Boolean变量控制,行得通,但是网页一旦AJAX重载后,由于Boolean变量还是false,又不能addEventListener,所以一旦AJAX我写得脚本就失效,请问大佬有什么好方法?

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    354

    主题

    3128

    帖子

    3129

    积分

    管理员

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

    Rank: 10Rank: 10Rank: 10

    积分
    3129

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

    发表于 2022-5-23 09:37:30 | 显示全部楼层
    AJAX重载不会影响变量呀
    有没有例子看看
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 06:58
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    11

    主题

    51

    帖子

    66

    积分

    初级工程师

    Rank: 4

    积分
    66
    发表于 2022-5-23 11:46:18 | 显示全部楼层
    李恒道 发表于 2022-5-23 09:37
    AJAX重载不会影响变量呀
    有没有例子看看

    1. let numI = true;
    2. let inputblur =document.querySelector('#sales-sourceid-orderAddPage');
    3.                     if (inputblur && numI){
    4.                         // console.log('add');
    5.                         inputblur.addEventListener("focusout", function(event) {
    6.                             let customerInput = document.querySelector('#sales-customer-showid-orderAddPage a');
    7.                             if (inputblur.value){
    8.                                 QueryCustomerOrder(customerInput.innerText,inputblur.value);
    9.                             }
    10.                         },true);
    11.                         numI = false;
    12.                     }
    复制代码

    这个页面是由js生成的,页面有个保存按钮,点击保存后页面又会重新生成。
    问题在于我加了numI 这个参数,页面重新生成后numI 还是false,绑不了事件监听;但是不用这个参数,就会重复添加事件监听
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    354

    主题

    3128

    帖子

    3129

    积分

    管理员

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

    Rank: 10Rank: 10Rank: 10

    积分
    3129

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

    发表于 2022-5-23 14:06:21 | 显示全部楼层
    琦玉 发表于 2022-5-23 11:46
    这个页面是由js生成的,页面有个保存按钮,点击保存后页面又会重新生成。
    问题在于我加了numI 这个参数 ...

    可以先尝试removeaddeventlistener一次
    然后再附加?
    或者附加一次之后对buttion附加一个class类名作为标识
    判断有class类就不继续执行了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 06:58
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    11

    主题

    51

    帖子

    66

    积分

    初级工程师

    Rank: 4

    积分
    66
    发表于 2022-5-23 14:23:12 | 显示全部楼层
    李恒道 发表于 2022-5-23 14:06
    可以先尝试removeaddeventlistener一次
    然后再附加?
    或者附加一次之后对buttion附加一个class类名作为标 ...

    后面那方法不错,我试下。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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