【问题标题】:Select items with a class and tagname [duplicate]选择具有类和标记名的项目[重复]
【发布时间】:2014-04-07 22:50:28
【问题描述】:

我想使用 JS 查找所有带有 A 标签和类 Titanic 的项目。如果没有 querySelector,我将如何处理这个问题。我希望方法快。所以最好不要循环。

【问题讨论】:

  • 道歉但是,关于这个问题的资源很多,更不用说网络了。
  • 我找不到任何不指向 QuerySelector 的内容。因此,除非您能找到这样的链接,否则您的评论是情绪化的,而您的反对意见毫无用处。

标签: javascript dom


【解决方案1】:

你不会摆脱循环。

您可以使用已经包含页面中所有链接的document.links集合,并检查每个链接的类名:

var el = [];
for (var i = 0; i < document.links.length; i++) {
    if (document.links[i].className == 'Titanic') {
        el.push(document.links[i]);
    }
}

演示:http://jsfiddle.net/TrhCG/

注意:links 集合仅包含实际链接,即带有href 属性的锚标记(和区域标记)。此外,仅当元素仅包含该类名时,比较类名的方法才有效。

【讨论】:

  • +1,但document.links 仅包含链接,OP 可能希望锚点。 ;-)
  • @RobG:很好,我正在考虑这个问题。我添加了一个注释,说明了代码的限制。
【解决方案2】:

您可以使用 getElementsByTagName() 函数来选择锚标签。您可以使用 .classname 属性检查类名。

var elems = document.getElementsByTagName('*'), i;
    for (i in elems) {
        if((' ' + elems[i].className + ' ').indexOf(' ' + matchClass + ' ')
                > -1) {
           /*Do something.*/
        }
    }

如果您使用 jQuery,生活会轻松得多。

【讨论】:

  • ('*') 什么时候可以使用a
  • 没有循环就不能完成吗?而且 Jquery 更简单,但速度更慢。
  • 是的。你可以使用“a”、“input”或任何类型的东西。
  • javascript 本身没有直接获取类名的功能。
猜你喜欢
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2011-01-02
  • 2021-10-06
  • 1970-01-01
相关资源
最近更新 更多