0

クラス名として入れる6つの引数を持つイベントハンドラーがあります。関数をトリガーすると、6つの引数すべてが直接出力されます。

そのため、クラスを含む配列を作成しようとしていますが、うまくいきません。コンソールログには、配列が内部でインデックス値を呼び出していることが記録されています...しかし、画面には魔法はありません。何か案は ?

        function AddEvent(){
            var AddEvent = "add";
            var addClassArr= document.getElementsByClassName(AddEvent);
            for(var i=0; i<addClassArr.length; i++){
                var addClass = addClassArr[i];
                addClass.addEventListener("click", addDiceEvent, true);
            }
            var diceArray = ["dice dice-side-one",
            "dice dice-side-two",
            "dice dice-side-three",
            "dice dice-side-four",
            "dice dice-side-five",
            "dice dice-side-six",
            "dice dice-side-six"];

 function addDiceEvent() {
             var sides = diceArray[2];

    }    }
        AddEvent(); 
4

2 に答える 2

1

次のように機能を関数内にラップすることをお勧めします。

function AddEvent(className) 
{
    var nodes = document.getElementsByClassName(className),
    sides = ["dice dice-side-one",
            "dice dice-side-two",
            "dice dice-side-three",
            "dice dice-side-four",
            "dice dice-side-five",
            "dice dice-side-six",
            "dice dice-side-six"],
    handleClick = function() {
        var sides = sides[2];
    }

    for (var i=0; i<addClassArr.length; i++) {
        var addClass = addClassArr[i];
        addClass.addEventListener("click", handleClick, true);
    }
}

呼び出すには:

AddEvent('add');

または、モジュール パターンを使用して、実装を非表示にすることもできます。

于 2013-02-03T05:01:21.913 に答える
0

まあ、私は自分の質問に答えることができます:)問題は、イベント呼び出し元内で配列を作成していたことです。うまくいきませんでしたが、これでうまくいきました。

  var 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",
        "dice dice-side-six"];
        var rand = Array[Math.floor(Math.random() * Array.length)];

        function addDiceEvent() {
        dicesides_func(rand);
于 2013-02-03T04:44:54.017 に答える