按类名获取div并在javascript中返回它

时间:2015-04-30 21:25:27

标签: javascript jquery html css

我正在尝试使用非常简单的js脚本将一些javascript注入网页:

var c = document.getElementsByClassName("main").innerHTML;
alert(c);

我想在div中使用class =“main”设置文本(以及仅文本)的警报。目前,该脚本正在弹出一个警告,提示“未定义”。我做错了什么,类名肯定是正确的,我已经搜索了stackoverflow和其他来源,尝试过.innerHTML和.textContent但似乎没有任何东西能够简单地返回一个文本变量。

4 个答案:

答案 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

JSFiddle Demo

如果要选择类的所有元素,最简单的方法是使用循环:

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

JSFiddle Demo