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

2020-11-18 22:30:08 +08:00
 tobecoder

代码如下:

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

界面如下:

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

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

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

1622 次点击
所在节点    程序员
12 条回复
muzuiget
2020-11-18 22:44:23 +08:00
定时检查,要不然在上一个函数里加回调。
tobecoder
2020-11-18 22:49:28 +08:00
@muzuiget 定时检查意思是等待检查吗??我有试过加 setTimeout(),但是 select_topic 还是等待不到需要的元素
galikeoy
2020-11-18 23:00:57 +08:00
定时检查+1,或者 MutationObserver
galikeoy
2020-11-18 23:04:43 +08:00
@tobecoder #2 定时是 setinteval(fn,0),判断有 dom 了就停止
tobecoder
2020-11-18 23:08:14 +08:00
@galikeoy 定时检查的前提是函数执行完之后元素肯定能加载出来,但是目前尝试好像并不能,有什么办法可以确定元素已经加载出来呢?
galikeoy
2020-11-18 23:13:27 +08:00
@tobecoder #5 setinteval(fn,0),或者 MutationObserver
codespots
2020-11-18 23:54:54 +08:00
现在的小朋友已经不知道 DOM 操作了吗?
GressJoe
2020-11-19 08:55:18 +08:00
select_title 是异步函数吧。。。
Exceptionluo
2020-11-19 09:03:52 +08:00
检查下动态添加的 DOM 绑定的事件有没有生效
NCry
2020-11-19 09:23:36 +08:00
为啥不是在第一个方法的回调里面写第二个方法,两个方法一定要同层的话,就只能像楼上说的一样加轮询了。
jiangnan01
2020-11-19 09:48:38 +08:00
DOMNodeInserted 监听了解一下,给 select_title 方法加载新 dom 元素的父级添加这个监听
tobecoder
2020-11-21 00:50:10 +08:00
@galikeoy 谢谢老哥 ,延时久一点就可以了,很赣

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/726886

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX