我是 JavaScript 新手。我正在尝试创建一个脚本,它将单击属于特定类的所有元素。我的代码似乎不起作用;我已经通过几个不同的调试程序运行它,但没有返回任何结果。通过控制台运行它后,它返回的只是“未定义”。我能做什么?
注意:我要点击的元素是按钮;他们都属于“follow js-follow 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();
}
}
关于javascript - 单击 JavaScript 中特定类的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21540403/