【问题标题】:How to get element by class name如何通过类名获取元素
【发布时间】:2012-01-22 05:25:57
【问题描述】:

我想知道是否有办法使用getElementByClassName("classname").innerHTML 函数或与getElementById("ClassName").innerHTML 等效的东西。

【问题讨论】:

标签: javascript html css dom


【解决方案1】:

你可以使用 jquery 来做到这一点

$('.className').html();

http://api.jquery.com/html/

【讨论】:

  • 嘿这个答案帮我解答了js中class元素的用法。可能与上述问题无关,但它帮助我找出了我遇到的水平滚动问题。
【解决方案2】:

如果你使用 jQuery,你可以像在 CSS 选择器中一样获取它:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>

那么……

$('.classname').each(function() {
    // get html
    $(this).html();
    // set html
    $(this).html('something');
});

请注意,您还可以通过便捷的方式来管理 innerHTML。

【讨论】:

  • 这只会给你这个类的第一个元素的 html。实际上可能有很多,因此您可能必须使用each() 或类似的东西来处理它们。
  • 即使在编辑之后仍然不好...检查Blender的答案以了解正确的方法。
  • 它现在应该可以工作了...实际上它并没有比 Blender 的答案添加太多信息,但是谢谢。
  • each 回调中,您应该使用$(this).html() 而不是$('.classname').html()。我之前的 cmets 也适用于此处所有其他未使用 each 并直接在 JQuery 选择器上调用方法的答案。
  • 在编辑器之外更正已经编写的代码通常是一条充满危险的道路!再次感谢 ivantod。
【解决方案3】:

我建议你使用 JQuery,在那里你可以直接使用 CSS 选择器(如 .yourclass)来查找给定类的所有元素:

$('.yourclass').doWhatYouWant();

如果你不想使用 JQuery,你可以使用纯 Javascript:

document.getElementsByClassName('my-fancy-class')

但要小心 IE8 不兼容问题。 作为替代方案(速度较慢,但​​您可以构建更复杂的 CSS 选择器),您可以使用:

document.querySelector('.cssSelector')

这将返回 一个元素响应您的 CSS 选择器,或者

document.querySelectorAll('.cssSelector')

这将返回多个元素。

【讨论】:

    【解决方案4】:

    您的函数名称中缺少sgetElementsByTagName 返回需要迭代的元素集合:

    var elements = document.getElementsByClassName("classname");
    
    for (var i = 0; i < elements.length; i++) {
        elements[i].innerHTML = 'foo';
    }
    

    IE8 及以下不支持getElementsByClassName,所以你必须找到一个polyfill 或使用querySelectorAll (IE8)。

    【讨论】:

    • 请注意 getElementsByClassName 在 IE8 及以下版本中不可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多