JS。如何获得具有相似类名的div列表?

时间:2014-01-29 20:19:30

标签: javascript html

我有html,就像这样:

<div id="c0" class="bz_comment bz_first_comment"></div>
<div id="c1" class="bz_comment"></div>
<div id="c2" class="bz_comment"></div>
<div class="bz_add_comment"></div>

如何在JavaScript(不使用JQuery)中以“bz_comment [anysymbols]”开头的类中获取所有div的数组(示例中为3 div)?

或者我可以通过以“c [numeric_value]”开头的id得到div的数组吗?

[numeric_value_can_consist_of_some_numbers]

这是类似于stackoverflow.com/questions/1225611/的问题(但我在这个问题上没有声誉)。提前谢谢。

2 个答案:

答案 0 :(得分:5)

您应该使用.querySelectorAll

var matching = document.querySelectorAll('[class*="bz_comment"]')

我在你的代码中看到了一些令人担忧的事情:

  • 您有连续的数字ID,请考虑使用Array代表顺序数据。
  • 您正在按类名标识符选择内容,如果必须这样做 - 请改用data-*属性。更好的是,将元素存储在数组中,并直接引用它们。

答案 1 :(得分:3)

您可以编写一个函数来处理页面上包含您正在查找的类的元素:

function containsClass(matchClassName) {
    var matches = new Array();
    var elems = document.getElementsByTagName('div'), i;
    for (i in elems) {
        if((' ' + elems[i].className + ' ').indexOf(' ' + matchClassName + ' ') > -1) {
           matches.push(elems[i]);
        }
    }
    return matches;
}

现在你可以写

var matches = containsClass('bz_comment');