getElementsByClassname 和 appendChild
getElementsByClass and appendChild
只是复习一下我的 javascript 技能,并试图弄清楚为什么 getElementsByClass 对我的代码不起作用。代码非常简单。单击按钮 "clicky" 后,脚本将创建 div 的子 h1 元素。当我使用 getElementById 并将 div class 更改为 Id 时它工作得很好但是当我将它更改为 class.
时它不起作用
我试过 getElementsByClassName、getElementsByClass、getElementsByTagName 并将 div 更改为适当的属性,但没有成功。
<!doctype html>
<html>
<body>
<p>Click on button to see how appendChild works</p>
<button onclick="myFunction()">Clicky </button>
<script>
function myFunction(){
var first = document.createElement("H1");
var text = document.createTextNode("Jason is pretty awesome");
first.appendChild(text);
document.getElementsByName("thistime").appendChild(first);
}
</script>
<div class="thistime">Hi</div>
</body>
</html>
您需要从
更新您的代码
document.getElementsByName("thistime").appendChild(first);
到
document.getElementsByClassName("thistime")[0].appendChild(first);
供参考 - https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName
如您所见,函数名为 getElementsByName
,其中 "elements" 是复数。
它returns 列表 标记的名称(而不是它们的 css class)。
您需要使用处理 class 名称的函数,并获取数组的第一个元素,或者循环所有结果,具体取决于您要查找的内容。
你可以使用getElementsByClassName(),IE9+支持:
document.getElementsByClassName("thistime")[0].appendChild(first);
但更好的选择可能是querySelector(),IE8+支持
document.querySelector(".thistime").appendChild(first);
请注意 querySelector()
使用 CSS 选择器语法,因此您应该在 class.
之前放置一个点 (.)
片段:
function myFunction() {
var first = document.createElement("H1");
var text = document.createTextNode("Jason is pretty awesome");
first.appendChild(text);
document.querySelector(".thistime").appendChild(first);
}
<p>Click on button to see how appendChild works</p>
<button onclick="myFunction()">Clicky</button>
<div class="thistime">Hi</div>
只是复习一下我的 javascript 技能,并试图弄清楚为什么 getElementsByClass 对我的代码不起作用。代码非常简单。单击按钮 "clicky" 后,脚本将创建 div 的子 h1 元素。当我使用 getElementById 并将 div class 更改为 Id 时它工作得很好但是当我将它更改为 class.
时它不起作用我试过 getElementsByClassName、getElementsByClass、getElementsByTagName 并将 div 更改为适当的属性,但没有成功。
<!doctype html>
<html>
<body>
<p>Click on button to see how appendChild works</p>
<button onclick="myFunction()">Clicky </button>
<script>
function myFunction(){
var first = document.createElement("H1");
var text = document.createTextNode("Jason is pretty awesome");
first.appendChild(text);
document.getElementsByName("thistime").appendChild(first);
}
</script>
<div class="thistime">Hi</div>
</body>
</html>
您需要从
更新您的代码document.getElementsByName("thistime").appendChild(first);
到
document.getElementsByClassName("thistime")[0].appendChild(first);
供参考 - https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName
如您所见,函数名为 getElementsByName
,其中 "elements" 是复数。
它returns 列表 标记的名称(而不是它们的 css class)。
您需要使用处理 class 名称的函数,并获取数组的第一个元素,或者循环所有结果,具体取决于您要查找的内容。
你可以使用getElementsByClassName(),IE9+支持:
document.getElementsByClassName("thistime")[0].appendChild(first);
但更好的选择可能是querySelector(),IE8+支持
document.querySelector(".thistime").appendChild(first);
请注意 querySelector()
使用 CSS 选择器语法,因此您应该在 class.
片段:
function myFunction() {
var first = document.createElement("H1");
var text = document.createTextNode("Jason is pretty awesome");
first.appendChild(text);
document.querySelector(".thistime").appendChild(first);
}
<p>Click on button to see how appendChild works</p>
<button onclick="myFunction()">Clicky</button>
<div class="thistime">Hi</div>