我需要一些建议。
让我们看看,我有这样的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
答案 0 :(得分:3)
此问题与div
或span
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";