Javascript getElementsByClassName不是';t返回所有元素
我正在创建一个按钮,我应该突出显示指定类中的某些单词,但是我在返回类中的所有元素时遇到了问题。它只有在我指定一个索引时才能工作,所以我假设现有的“for循环”可能有问题。感谢您的帮助 这会起作用,但只“突出”课堂上的第一个元素,当然:Javascript getElementsByClassName不是';t返回所有元素,javascript,getelementsbyclassname,Javascript,Getelementsbyclassname,我正在创建一个按钮,我应该突出显示指定类中的某些单词,但是我在返回类中的所有元素时遇到了问题。它只有在我指定一个索引时才能工作,所以我假设现有的“for循环”可能有问题。感谢您的帮助 这会起作用,但只“突出”课堂上的第一个元素,当然: var bodyText = document.getElementsByClassName('test')[0].innerHTML; for (var i = 0; i < searchArray.length; i++) { bodyText = do
var bodyText = document.getElementsByClassName('test')[0].innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag,
highlightEndTag);}
document.getElementsByClassName('test')[0].innerHTML = bodyText;
return true;
var bodyText=document.getElementsByClassName('test')[0].innerHTML;
对于(var i=0;i
这根本行不通:
var bodyText = document.getElementsByClassName('test').innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag,
highlightEndTag);}
document.getElementsByClassName('test').innerHTML = bodyText;
return true;
var bodyText=document.getElementsByClassName('test').innerHTML;
对于(var i=0;i
您无法在返回htmlcollection的内容中访问innerHTML
因为它是用纯英语编写的:getElementsByClassName
复数
“元素”
结尾有一个“s”
这意味着它是一种数组(an)正如您所看到的
getElementsByClassName
是复数的(元素)。实际上,可以将同一个类分配给多个HTML元素。您找不到任何方法来管理[0]
,而且您也不应该这样做,因为这可能意味着您从错误的节点获取了数据。如果您需要某个特定元素的数据,并且可以确保该数据是唯一的,那么您需要给它一个id,并使用getElementById
。如果要替换多个元素中的多个字,则需要两个循环:
const testElements = document.getElementsByClassName('test');
for (const element of testElements) {
for (const search of searchArray) {
element.innerHTML = doHighlight(element.innerHTML, search, highlightStartTag, highlightEndTag);
}
}
由于我们不知道
doHighlight
是做什么的,所以很难提供帮助,但问题通常是,getElementsByClassName
返回一个集合,您需要将它与一个像梦一样工作的循环一起使用。从其他的评论中,我意识到我的解释不够清楚,但你能读懂我的心思!这正是我所缺少的。
const testElements = document.getElementsByClassName('test');
for (const element of testElements) {
for (const search of searchArray) {
element.innerHTML = doHighlight(element.innerHTML, search, highlightStartTag, highlightEndTag);
}
}