Для метода addEventListener
нужна функция во втором параметре, и вы передали не функцию, а результат функции alert()
(то есть, недействительной).
Изменение: alert("changed!")
на
function() {alert("changed!")}
(который может быть сокращен на () => alert("changed!")
с ES6 ) :
function createDiv() {
var div = document.createElement('div');
div.className = 'main-div';
div.id = 'mainDiv';
div.setAttribute('title', 'Main Div');
var divText = document.createTextNode("Select a Number ");
div.appendChild(divText);
var select = document.createElement('select')
for (var i = 1; i <= 10; i++) {
select.options[i] = new Option(i);
}
select.addEventListener("change", function() {alert("changed to "+select.value)});
div.appendChild(select);
document.body.appendChild(div);
}
<body onload = createDiv()>
<h1 id = "heading1">Test</h1>
</body>