Вы OnClick = «перетасовать()» на кнопку подкачки и что функция не определена в глобальном масштабе, когда это событие будет уволен в течение. Либо переместите функцию в область окна, либо создайте DOM-узел и прикрепите к нему реальное событие, а не используя document.writeln
Кроме того, в функции тасования используется document.writeln, примером может быть его пересмотр и сделать что-то вроде этого, вместо:
function shuffle(){
//organize and sort your letters here
var letters = ....
//query for all elements with class = 'letters' use a library if you want full browser support.
var letter_nodes = document.querySelectorAll("div.letters");
for (var i = 0, n = letter_nodes.length; i<n; ++i) {
letter_nodes[i].innerHTML = letters[i]; // letters and letter_nodes array should have the same length.
}
}
Отредактировано:
изменить вашу функцию воспроизведения в случайном порядке, чтобы выглядеть следующим образом:
var letters=['A','B','E','F','O','M','I','T']; //to access letters.length in the other function
function shuffle(){
letters.sort(function(){return 0.5 - Math.random();});
var letter_nodes = document.getElementById('lettersContainer');
letter_nodes = letter_nodes.getElementsByTagName('div');
for (var i = 0, n = letter_nodes.length; i<n; ++i) {
letter_nodes[i].innerHTML = letters[i];
}
return false;
}
измените ра к.т., где вы создаете контейнер (в print_2d_string_array)
document.writeln ("<a href='#' onclick='return shuffle()' class='swap'>Swap</a>");
document.writeln ("<div id='lettersContainer'>");
for (var i = 0; i < letters.length; ++i) {
document.writeln ("<div class='letters'></div>");
}
shuffle();
document.writeln ("</div>"); /* lettersContainer end */
К сожалению, Ваш вопрос мне не ясно :( –