触发函数时随机化类的事件处理程序

时间:2013-02-03 04:08:11

标签: javascript

我有一个事件处理程序,它有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(); 

2 个答案:

答案 0 :(得分: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');

或者,您可以使用模块模式来完成实现隐藏。

答案 1 :(得分: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);