没有div的getElementsByClassName

时间:2014-07-09 08:54:33

标签: javascript html getelementbyid

我需要一些建议。

让我们看看,我有这样的HTML代码:

<body>
    <span class="example">Example Text</span>
    <span class="notthis">Other Text</span>
</body>

是的,没有div!如何在span =&#34;示例&#34;之间重新调整文本。 ?

我试过了:

var elem = document.getElementByClassName("example");
elem.innerHTML = "change example text to something other";

但是它不起作用,当然如果有div并且使用getElementById然后使用ClassName,它可以很好地工作。

问题是没有div:)

甚至可能吗?

此致

Tagon

4 个答案:

答案 0 :(得分:3)

此问题与divspan

无关

getElementById选择给定id的第一个元素,
getElementsByClassName返回具有所有给定类名的所有子元素的类数组对象。

使用getElementsByClassName代替getElementByClassName

您想将innerHTML放到类example 的第一个元素中,请尝试下面的代码

var elem = document.getElementsByClassName("example")[0];
elem.innerHTML = "change example text to something other";

答案 1 :(得分:2)

getElementsByClassName(“example”)将返回一个HTMLCollection,其中第一个span包含class =“example”,因此请更改为:

  

var elem = document.getElementsByClassName(“example”);
  elem [0] .innerHTML =“将示例文本更改为其他内容”;

您可以阅读有关getElementsByClassName()的规范:W3C

答案 2 :(得分:1)

您的代码中有两个错误:

1: 它是getElementsByClassName而不是getElementByClassName

2:getElementsByClassName返回节点数组而不是一个节点。因此,如果要更改所有匹配元素上的文本,则必须循环遍历元素:

var elements = document.getElementsByClassName("example");
for(i = 0; i < elements.length; i++){
    var elem = elements[i];
    elem.innerHTML = "change example text to something other";
}

但是如果您只想更改第一个匹配元素的文本,您可以这样做:

var elem = document.getElementByClassName("example")[0];
elem.innerHTML = "change example text to something other";

注意:即使没有div

getElementsByClassName也可以处理任何元素

答案 3 :(得分:0)

getElementByClassName返回类似数组的对象,因此,请更改为:

var elem = document.getElementByClassName("example");
elem[0].innerHTML = "change example text to something other";