V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tobecoder
V2EX  ›  程序员

执行 js 脚本,无法查询到页面新加载出的元素

  •  
  •   tobecoder · 2020-11-18 22:30:08 +08:00 · 1621 次点击
    这是一个创建于 1467 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码如下:

    var main = function() {
        select_title();     //执行完此程序之后页面会加载出新的 dom 元素
        select_topic();   //该函数需要处理 select_title 函数加载的新元素,但是无法查询到,不知是什么问题
    }
    

    界面如下:

    a6.jpg

    select_title 选择完马克思理论之后会加载出下面的选项

    select_topic 选择下面的选项时,却找不到对应的元素

    请问大佬们 有什么解决方案,还有无法这样处理的原因是什么

    12 条回复    2020-11-21 00:50:10 +08:00
    muzuiget
        1
    muzuiget  
       2020-11-18 22:44:23 +08:00
    定时检查,要不然在上一个函数里加回调。
    tobecoder
        2
    tobecoder  
    OP
       2020-11-18 22:49:28 +08:00
    @muzuiget 定时检查意思是等待检查吗??我有试过加 setTimeout(),但是 select_topic 还是等待不到需要的元素
    galikeoy
        3
    galikeoy  
       2020-11-18 23:00:57 +08:00
    定时检查+1,或者 MutationObserver
    galikeoy
        4
    galikeoy  
       2020-11-18 23:04:43 +08:00
    @tobecoder #2 定时是 setinteval(fn,0),判断有 dom 了就停止
    tobecoder
        5
    tobecoder  
    OP
       2020-11-18 23:08:14 +08:00
    @galikeoy 定时检查的前提是函数执行完之后元素肯定能加载出来,但是目前尝试好像并不能,有什么办法可以确定元素已经加载出来呢?
    galikeoy
        6
    galikeoy  
       2020-11-18 23:13:27 +08:00
    @tobecoder #5 setinteval(fn,0),或者 MutationObserver
    codespots
        7
    codespots  
       2020-11-18 23:54:54 +08:00
    现在的小朋友已经不知道 DOM 操作了吗?
    GressJoe
        8
    GressJoe  
       2020-11-19 08:55:18 +08:00
    select_title 是异步函数吧。。。
    Exceptionluo
        9
    Exceptionluo  
       2020-11-19 09:03:52 +08:00
    检查下动态添加的 DOM 绑定的事件有没有生效
    NCry
        10
    NCry  
       2020-11-19 09:23:36 +08:00
    为啥不是在第一个方法的回调里面写第二个方法,两个方法一定要同层的话,就只能像楼上说的一样加轮询了。
    jiangnan01
        11
    jiangnan01  
       2020-11-19 09:48:38 +08:00
    DOMNodeInserted 监听了解一下,给 select_title 方法加载新 dom 元素的父级添加这个监听
    tobecoder
        12
    tobecoder  
    OP
       2020-11-21 00:50:10 +08:00
    @galikeoy 谢谢老哥 ,延时久一点就可以了,很赣
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5611 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 07:37 · PVG 15:37 · LAX 23:37 · JFK 02:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.