我正在尝试使用非常简单的js脚本将一些javascript注入网页:
var c = document.getElementsByClassName("main").innerHTML;
alert(c);
我想在div中使用class =“main”设置文本(以及仅文本)的警报。目前,该脚本正在弹出一个警告,提示“未定义”。我做错了什么,类名肯定是正确的,我已经搜索了stackoverflow和其他来源,尝试过.innerHTML和.textContent但似乎没有任何东西能够简单地返回一个文本变量。
答案 0 :(得分:4)
getElementsByClassName
返回一个类似于object的数组。它上面没有innerHTML
属性。您需要对返回的所有div或特定的div执行操作。有关更多示例,请参阅文档。 https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName
答案 1 :(得分:2)
document.getElementsByClassName
返回一个数组,因为可能有多个具有相同类名的类。
尝试
var c = document.getElementsByClassName("main")[0].innerHTML;
alert(c);
答案 2 :(得分:1)
问题是您要返回set of nodes (HTMLCollection)。具有类" main"的所有元素(getElementsByClassName)。例如,这将显示第一个元素的innerHTML
cart.push
然而,更为标准化的方法是使用querySelector
这样的
var c = document.getElementsByClassName("main")[0].innerHTML;
alert(c);
答案 3 :(得分:0)
使用getElementsByClassName()
,它会返回array
(在本例中为一组元素),您必须定义一个偏移量以标记您要使用的其中一个元素:
document.getElementsByClassName("main")[0].innerHTML;//0 returns the first element
如果要选择类的所有元素,最简单的方法是使用循环:
var element =document.getElementsByClassName("main");
for($i=0;$i<=element.length;$i++){
alert(element[$i].innerHTML);
}