После document.write(...);
другие элементы на странице не ожидают пропущенного текста.
Вот почему, когда вы пытаетесь найти, document.getElementById("demo")
не может найти и вернуть null
. (затем выдает ошибку, когда вы пытаетесь получить доступ к innerHTML
)
Если вы пытаетесь добавить что-то на страницу, вы должны использовать document.body.innerHTML += "..."
.
О самом алгоритме - вы можете использовать:
[1,2,3,4,5,6,7].sort(function() { return .5 -Math.random();});
Он будет случайным образом перемешивать массив.