just brushing up on my javascript skills and trying to figure out why getElementsByClass isn't working for my code. The code is pretty simple. Upon clicking a button "clicky", the script will create a child h1 element of div. It works perfectly fine when I use getElementById and changing the div class to Id but doesn't work when I change it to class.
I've tried, getElementsByClassName, getElementsByClass, getElementsByTagName and changing the div to the appropriate attribute but no luck.
<!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()
, andname
is not a valid property of non interactive form elements. Secondly you're working with a NodeList or a collection, over which you have to iterate in order to useappendChild()
on each element in the collection. And then it wouldn't work as you want because all you'd be doing is inserting the created element into the first element of the collection, then moving it to the second, then the third and so on until it's in the last. So you'd also need to usecloneNode
or repeatedly create the created element in every iteration of said loop. – Canalize