如何在循环中获取带有类名的标签文本?

时间:2014-01-28 02:52:42

标签: javascript jquery

我有许多具有相同类名的标签,但它们都有不同的文字。我想循环遍历它们并获得此文本。

这就是我所拥有的:

<label class="mylabel pull-left"> Hello </label>
<label class="mylabel pull-left"> olleH </label>
.....

我试试这个:

<script>
    var element = document.getElementsByClassName('mylabel');
    for(var i = 0; i<element.length;i++) {
         alert(element[i].text());
    }
</script>

但是我收到了这个错误:

TypeError: element[i].text is not a function

我尝试alert(element[i].text),但只返回undefined

但是我可以使用alert(element[i].className)获取其className,为什么我不能得到它的文本?

3 个答案:

答案 0 :(得分:3)

javascript中没有text函数。请尝试使用innerHTML代替:

var element = document.getElementsByClassName('mylabel');
for(var i = 0; i<element.length;i++) {
     alert(element[i].innerHTML);
}

<强> Fiddle Demo

如果你使用jQuery,你可以像你正在尝试的那样使用 text()

$.each($('.mylabel'), function() {
    alert($(this).text());
})

<强> Fiddle Demo

答案 1 :(得分:0)

这应该有用。

$('.mylabel').each(function() {
    var x = $(this).text();
    alert(x);
});

答案 2 :(得分:0)

问题:但我可以使用alert(element [i] .className)获取其className,为什么我不能获取其文本?

答案:您不再瞄准javascript元素,只是对它的引用。如果您想获得更多jQuery信息,则需要使用innerHTML作为此功能。

使用jQuery selector $更新您的用例。

在这里小提琴:http://jsfiddle.net/SinisterSystems/ZKzVz/

<label class="mylabel pull-left"> Hello </label>
<label class="mylabel pull-left"> olleH </label>

var element = $('.mylabel');
for(var i = 0; i<element.length;i++) {
     alert($(element[i]).text());
}

此外,您可以进一步缩短:

$('.mylabel').each(function() {
    alert($(this).text());
});