getElementByClassName返回'未定义',但它对Id有效
getElementByClassName returning 'undefined', but it works for Id?
我正试图用class
更改Id
的内容,但我不知道为什么这不起作用。。。
<h1 id="header">header</h1>
<h4 id="sub">sub header</h4>
<span class="content">Please work!</span>
这返回了"undefined",而我的文本编辑器似乎无法识别getElementsByClassName
——它与getElementById
配合使用很好
var test = document.getElementsByClassName("content").innerHTML;
document.getElementById("header").innerHTML = test;
DEMO
这样访问它:-
document.getElementsByClassName("content")[0];
getElementsByClassName()
方法得到许多DOM元素,而getElementById()
只得到一个DOM元素。
问题的关键是隐藏在表达式"getElementsByClassName"中的小"s"。document.getElementsByClassName
将返回一个数组,为了获得第一个元素,请使用document.getElementsByClassName("content")[0]
或使用for循环遍历所有元素
var test = document.getElementsByClassName("content")[0].innerHTML;
document.getElementById("header").innerHTML = test;
var elements = document.getElementsByClassName("content")
for (var i = 0; i < elements.length; ++i) {
// elements[i]
}
<h1 id="header">header</h1>
<h4 id="sub">sub header</h4>
<span class="content">Please work!</span>
var test = document.getElementsByClassName("content")[0].innerHTML;
document.getElementById("header").innerHTML = test;
<h1 id="header">header</h1>
<h4 id="sub">sub header</h4>
<span class="content">It's working!</span>
getElementsByClassName
返回一个元素数组(而getElementById
返回一个单一元素——注意复数与单数)。由于javascript数组没有innerHTML
属性,因此会得到未定义的。必须首先从数组中检索一个元素。例如
var elements = document.getElementsByClassName("content");
var firstElement = elements[0];
var x = firstElement.innerHTML // and so on...
这应该可以解决您的问题。如果有什么我能做的,请告诉我:)
document.getElementById
只返回一个元素。CCD_ 13和CCD_ 14可以返回多个元素,因为一个页面上可以有多个CCD_。也就是说,您必须告诉JavaScript您想要哪个元素,因为可以有多个类名为content
的元素。要执行此操作,请使用document.getElementsByClassName('content')[index]
。许多人喜欢在这里使用循环来快速循环具有特定类或标记名的所有元素。
希望你能学到一些东西,我每天也在这里学到一些东西:)
window.addEventListener('load', function() {
var test = document.getElementsByClassName("content")[0].innerHTML;
document.getElementById("header").innerHTML = test;
});
<h1 id="header">Default header HTML</h1>
<h4 id="sub">sub header</h4>
<span class="content">Content HTML</span>
- 如何有效地匹配两个不同 JavaScript 对象上的 id,并将它们合并在一起
- 只有当脚本放置在具有所用ID的元素下方时,JavaScript才有效
- Mootools提交表单仅在通过ID选择表单时有效
- 选择id中带有双点的元素,错误:“#octo:cat”不是有效的选择器
- 无法在 jquery .append() 方法中的按钮中添加类或 id 以制作有效的按钮
- 为什么 $(“input[id='username']”) 有效,而 $(“#username”) 则无效
- 尝试为 4 张图像设置宽度和高度,但只有一张有效;其他人被跳过.ID 彼此不同
- JavaScript 中更有效的 ID 计算器版本
- 对要用作html有效路径的路径进行编码的最佳方式“;id”;或“;name”;标签
- 按id合并两个阵列的有效方法,无重复
- 最好在ID中使用有效的HTML或转义元字符
- getElementByClassName返回'未定义',但它对Id有效
- obj.attr('id') 返回 undefined 但 obj.getAttribute('id') 有效.为什么
- 我如何检查一个字符串是否会使用JS使一个有效的html ID
- 函数从字符串创建一个有效的id.正则表达式
- Regexp -找到我的电子邮件Id结束与有效的域
- Facebook营销API:参数必须是一个有效的Instagram帐户id
- 对dom中的元素应用class或id哪个更有效?
- 什么是检测具有特定ID的元素何时插入DOM的最有效方法?
- 抓取:浏览器的会话 ID 有效,但抓取的会话 ID 无效