код работает, и очень даже хорошо
просто вы созданный вами DIV не помещаете в тело документа.
то есть это просто объект в памяти, не более того
поместить его можно например так:
document.body.appendChild(newDiv)
к тому же код выхывается до того момента, как начнет строится DOM-дерево
надо повесить его на onload, либо в теле body
вот оба варианта:
<html>
<head>
<script>
window.onload=function(){
var newDiv = document.createElement('div')
newDiv.className = 'my-class'
newDiv.id = 'my-id'
newDiv.style.backgroundColor = 'red'
newDiv.innerHTML = 'Привет, мир!'
document.body.appendChild(newDiv)
}
</script>
</head>
<body>
</body>
</html>
<html>
<head>
</head>
<body>
<script>
var newDiv = document.createElement('div')
newDiv.className = 'my-class'
newDiv.id = 'my-id'
newDiv.style.backgroundColor = 'red'
newDiv.innerHTML = 'Привет, мир!'
document.body.appendChild(newDiv)
</script>
</body>
</html>