我是JavaScript新手。我正在尝试创建一个脚本,该脚本将单击属于特定类的所有元素。我的代码似乎无效。我已经通过几个不返回任何结果的调试程序来运行它。通过控制台运行它之后,返回的所有内容都是“未定义的”。我能做些什么?
注意:我想单击的元素是按钮;它们都属于“跟随js-跟随btn btn-primary”类;我只想在数据值“ data-following”等于“ 0”时单击它们。
谢谢!
var numRepeat = document.querySelectorAll("follow js-follow btn btn-primary").length;
for (var i = 0; i < numRepeat; ++i) {
var currentFocus = document.getElementsByClassName("follow js-follow btn btn-primary")[i];
if (currentFocus !== null) {
var followBinary = currentFocus.getAttribute("data-following");
if (followBinary === "0") {
currentFocus.click();
}
}
}
首先,还不清楚您要完成什么。如果您可以包含一些HTML并用言语解释您实际上要做什么,那么我们可以为您提供更好的解决方案的最佳思路。
然后,我看到了几个潜在的问题(试图猜测您实际上在试图做什么):
1) document.querySelectorAll("follow js-follow btn btn-primary")
正在寻找这样的标签名称层次结构:
<follow>
<js-follow>
<btn>
<btn-primary>
这真的是您要寻找的,还是您的意思是班级名称?如果是类名,那么您需要.
在名称前加一个,或者如果您正在寻找具有任何这些类名的对象,则在其前加一个句号并在它们之间加逗号。
2)运行完全相同的getElementsByClassName()
查询numRepeat次没有任何意义。只需运行一次并遍历结果。
3)click()
通常最好只执行该DOM对象所需的代码并将其传递给所需的DOM对象,而不是调用方法。您可以为点击处理程序使用相同的函数,并在需要时直接调用。
我怀疑问题#1可能是您的主要问题,因为按照现在的方式,它可能会发现零结果。
如果我假设您真正想要的选择器基于寻找具有这些类名称中任何一个的对象,那么您可以使用以下方法:
var items = document.querySelectorAll(".follow, .js-follow, .btn, .btn-primary");
for (var i = 0; i < items.length; i++) {
if (items[i].getAttribute("data-following") === "0") {
items[i].click();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句