0

私はロール機能を備えたサイコロアプリケーションを持っています。ロール機能はアプリケーション内でサイコロを転がすことを想定していますが、関数はサイコロを転がしていますが、すべてのサイコロを同じように出力します。このようなもの。価値のあるサイコロが4つある場合

1-4-7-3 、それらを転がすと、答えはランダムな nr になります 6 と言うと、6 つのサイコロすべてが 6-6-6-6 を出力します。

チップ ?

  function rollEvent(){ 
        var rollDices = "roll"; 
        var addClass= document.getElementsByClassName(rollDices); 
        addClass=addClass[addClass.length-1]; 
        addClass.addEventListener("click", rollDice, true); 
        var diceArray = Array=[ 
        "dice dice-side-one", 
        "dice dice-side-two", 
        "dice dice-side-three", 
        "dice dice-side-four", 
        "dice dice-side-five", 
        "dice dice-side-six"]; 
        function rollDice(e) { 
            var name = diceArray[Math.floor(Math.random() * diceArray.length)]; 
            var obj=e.target; 
            var elementToRemove = " dice-window-wrapper "; 
            while((" "+obj.className+" ").indexOf(elementToRemove)==-1){ 
                obj=obj.parentNode; 
            } 

            var allDiceInWindow=obj.getElementsByClassName("dice"); 


             for(var i = 0; i<allDiceInWindow.length; i++){

                  allDiceInWindow[i].className = name;

            }



        } 
    }
    rollEvent();
4

1 に答える 1

1

メソッドを 1 回だけ呼び出してMath.random()、その結果をすべてのサイコロに適用します。メソッドでこれを試してくださいrollDice

function rollDice(e) { 
    var obj=e.target; 
    var elementToRemove = " dice-window-wrapper "; 
    while((" "+obj.className+" ").indexOf(elementToRemove)==-1){ 
        obj=obj.parentNode; 
    }
    var allDiceInWindow=obj.getElementsByClassName("dice"); 

    for(var i = 0; i<allDiceInWindow.length; i++){
        // set the name individually for each die
        var name = diceArray[Math.floor(Math.random() * diceArray.length)]; 
        allDiceInWindow[i].className = name;
    }
} 
于 2013-02-09T09:57:07.503 に答える