2012-04-11 16 views
1

ボタンを使ってその関数を呼び出すたびに関数をロードするように関数を作成しました。しかし、私はページをリフレッシュするときにのみ動作しますが、スワップボタンを押すと動作しません。内部関数を呼び出す方法はありますか

はここで誰も私が問題を解決するために助けることができるリンクhttp://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html

です。

おかげ

+0

申し訳ありませんが、コンテナを作成RTは、あなたの質問は –

答えて

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; 
} 

は、PAを変更私はスワップボタンを押したときに、私はグローバルスコープの機能を維持する場合は、(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

おかげ明らかではないが、それ実際にはページ全体をリフレッシュしますが、新しいオーダーの文字のみをリフレッシュしたいのです。どのようにそれが可能です。 http://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html ありがとう – Krishnendu

+0

それをしようとします@xorath私には:( – Krishnendu

+0

shuffleでdocument.writeを使用しないでください。代わりにDOMノードで作業するように変更してみてください。また、onclick = "return shuffle()"を追加し、シャッフルメソッドからfalseを返して、URLに "#"が追加されないようにすることもできます。 – xorath