快速JS问题:
如果您执行以下操作:
var text = document.getElementByClassName("grid3").innerText;
如果你有这个类的多个元素,最好的方法是什么?
答案 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");
这是一个小提琴,展示了它是如何工作的,而不是有效的:
答案 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;
}