快速Javascript考虑使用document.getElementsByClassName来修复错误

时间:2013-12-10 09:24:18

标签: javascript

快速JS问题:

如果您执行以下操作:

var text = document.getElementByClassName("grid3").innerText;

如果你有这个类的多个元素,最好的方法是什么?

4 个答案:

答案 0 :(得分:2)

  

如果你有这个类的多个元素,最好的方法是什么?

它取决于您要引用的元素...您的示例将始终失败,因为该方法返回NodeList,而不管元素的数量。请注意,它是getElementsByClassName(复数“元素”)。

如果你想获得第一个:

var text = document.getElementsByClassName("grid3")[0].innerText;

如果你想要全部(在一个数组中):

var allText = [].map.call(document.getElementsByClassName("grid3"), function (elem) {
    return elem.innerText;
});

答案 1 :(得分:0)

它的document.getElementsByClassName("grid3")有s ...你总会得到一个对象数组。因此innerText不会在那里工作。

你可以像这样得到这个数组中单个元素的innerText:

var el = document.getElementsByClassName("grid3");
var text = el[0].innerText;

或者,如果您只有一个该类的元素,请给它一个id并使用 var el = document.getElementById("yourelementsid");

这是一个小提琴,展示了它是如何工作的,而不是有效的:

Fiddle

答案 2 :(得分:0)

没有方法document.getElementByClassName,你丢失了“s”。

document.getElementsByClassName总是返回一个数组(或类似数组的对象),所以你必须循环通过这个数组来找到你想要的东西。

答案 3 :(得分:0)

document.getElementsByClassName()返回元素列表,以便您可以将其用作数组。

var textArr = document.getElementByClassName("grid3");
for(var i = 0; i< textArr.length; i++){
   // here is your text
   var text = textArr[i].innerText;
 }