我正在温习JavaScript技能,并尝试弄清楚为什么我的代码中getElementsByClass不起作用。 代码非常简单。 在点击“clicky”按钮时,脚本将在div中创建一个子h1元素。 当我使用getElementById并将div类更改为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>
getElementsByName()
,而name
不是非交互式表单元素的有效属性。其次,你正在使用 NodeList 或集合,必须迭代每个元素才能在集合中使用appendChild()
。然后它不会按照你想要的方式工作,因为你所做的只是将创建的元素插入到集合的第一个元素中,然后移动到第二个,然后是第三个,以此类推,直到最后一个元素。因此,在循环的每次迭代中,你还需要使用cloneNode
或重复创建创建的元素。 - David Thomas