2012-04-11 2 views
1

Я создал функцию так, чтобы она загружала функцию всякий раз, когда вызывала эту функцию через кнопку. Но он работает только тогда, когда я обновляю страницу, но не работаю, когда я нажимаю кнопку «Сменить».Это их способ вызвать внутреннюю функцию

Вот ссылка http://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html

Может кто-нибудь помочь мне решить эту проблему.

Благодаря

+0

К сожалению, Ваш вопрос мне не ясно :( –

ответ

1

Вы 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 */ 
+0

Спасибо @xorath будет попробовать – Krishnendu

+0

Если я держать функцию в глобальном масштабе, когда я нажал на кнопку подкачки это на самом деле обновить всю страницу, но я хочу обновить только буквы для нового порядка. Как это возможно. http://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html Спасибо – Krishnendu

+0

вы все равно не должны использовать document.write в shuffle. Попробуйте изменить его для работы с DOM-узлами. Вы также можете добавить onclick = "return shuffle()", а затем вернуть false из метода тасования, чтобы избежать добавления "#" в URL-адрес. – xorath

Смежные вопросы