就像标题所说的,如何从滚动div中获取所有元素? 滚动列表中的元素是动态加载和销毁的。
我试图从此网站检索所有课程名称:https://public.enroll.wisc.edu/search?term=1204
下面的代码只能使用一次:
let list = document.getElementsByClassName('md-virtual-repeat-scroller')[0]
let childs = document.getElementsByClassName("result__name")
console.log(childs[0].innerText)
但是,如果这样做,我将获得10次相同的结果:
let list = document.getElementsByClassName('md-virtual-repeat-scroller')[0]
for(let i = 0; i < 10; i++) {
let childs = document.getElementsByClassName("result__name")
for(let j = 0; j < childs.length; j++) {
console.log(childs[j].innerText)
}
// scroll by 1000px every time
list.scrollBy(0, 1000)
}
我不知道出了什么问题。是因为scrollBy()可以asynchronously工作吗?但是我试图使用异步并等待。它仍然不起作用。
以尽可能少的文字提供更多信息。例如,许多问题可能与浏览器及其版本有关。这个脚本怎么称呼?您是否通过浏览器控制台发出命令?您是否已完成该站点的副本并对其进行了一些修改?很难从现实的角度理解问题。
提示:避免使用innerText。它速度较慢,并且在许多浏览器中受支持仅是为了兼容写入旧版本IE的脚本。 (我不知道为什么互联网上如此众多的示例将其作为首选)。用户textContent代替。
测试函数/方法的返回值总是好的,特别是在程序开发期间。
切勿向StackOverFlow社区(及其他任何组织)要求为您编写程序!
您质疑“我如何从滚动div中获取所有元素?”太“松散”了。滚动div?独立于“ div类型”(和标签!)的答案可以在下面找到。
您的代码似乎无济于事。为什么从0迭代到10?
看看这个片段。我认为它将为您提供帮助
const list = document.getElementsByClassName('md-virtual-repeat-scroller')[0];// if there is no intention to reassign it. Use [0] if you are sure it's the first element of this collection
let childs = list.getElementsByClassName("result__name"); // get only elements inside the first element!
使用变量的迭代器。
for(item of childs)
{
/*code*/
}
我相信您会实现您的目标!
而且绝不建议我们(社区)为您编码甚至解决您的问题。听起来很进取!对你也是!我确定。