繁体   English   中英

单击JavaScript中特定类的所有元素?

[英]Clicking all elements of a specific class in JavaScript?

我是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)通常最好只执行要用于该DOM对象的代码,然后将其传递给所需的DOM对象,而不是调用click()方法。 您可以为点击处理程序使用相同的函数,并在需要时直接调用。

我怀疑问题#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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM