2014-01-16 43 views
0

这是一个javascript代码。我收集了10个函数card11()card25()。在另一个HTML代码上点击一次,我想要一个这些函数被随机调用。我应用了以下逻辑,但似乎有缺陷。请帮助!Javascript-随机化一组函数

arr=[card11(), card12(), card13(), card14(), card15(), card21(), card22(), card23() , card24(), card25()]; 
    function myFunc(arr) 
    { 
     var d, c, b = arr.length; 
     while (b) 
     { 
      c = Math.floor(Math.random() * b); 
      d = arr[--b]; 
      arr[b] = arr[c]; 
      arr[c] = d; 
     } 
      return arr; 
    } 
+2

我可能是错的,但这些似乎是同样的功能的变化。你有没有考虑用一个参数而不是现在的10来制作一个更通用的函数? – Tibos

+0

嗯,我不知道我该怎么做。这些功能非常复杂。 –

+0

如果您认为问题足够有趣,也许您可​​以在[CodeReview](http://codereview.stackexchange.com/)上发帖。确保代码正在工作! – Tibos

回答

2

首先,数组应该包含,而不是执行函数的函数引用:

var arr=[card11, card12, card13, card14, card15, card21, card22, card23 , card24, card25]; 

接下来,你可以很容易地调用随机函数,使用此函数数组:

function callRandom(arr){ 
    arr[Math.floor(Math.random() * arr.length)](); 
} 

示例用法

function func1(){ 
    alert("func2"); 
} 
function func2(){ 
    alert("func1"); 
} 
function func3(){ 
    alert("func1"); 
} 

var arr = [func1, func2, func3]; 


function callRandom(arr){ 
    arr[Math.floor(Math.random() * arr.length)](); 
} 

callRandom(arr); 

JS小提琴:http://jsfiddle.net/cqLLV/1/

+0

​​ 这是在HTML中调用它的正确方法吗?我不知道要传递什么参数,因为我正在脚本文件中定义数组。 –

+0

@ user3193046您应该使用'addEventListener'附加事件,而不是内联处理程序。 –

+0

不,我明白了!我只是在函数内部声明了数组,并没有传递任何参数。它的工作现在很好。谢谢! –