我正在尝试运行一个随机函数,但还没有弄明白:
<script>
function randomFrom(array) {return array[Math.floor(Math.random() * array.length)];}
function randomchords(){randomFrom(['poop()', 'poop2()', 'poop3()']);}
function poop() { $(function() {ionian_c_vi() }); }
function poop2() { $(function() {ionian_c_iii() }), $(function() {ionian_c_iv() }); }
function poop3() { $(function() {ionian_c_vi() }), $(function() {ionian_c_i() }), $(function() {ionian_c_ii() }); }
</script>
然后:
<button onclick="randomchords()" >Get some random chords</button>
我是在正确的轨道上吗?
答案 0 :(得分:9)
一种选择是使用window
对象:
function randomchords() {
var func = randomFrom(['poop', 'poop2', 'poop3']);
window[func]();
}
注意你应该从数组中的函数名中删除括号。
另一种选择是从上面的变体中删除引号并直接调用函数:
function randomchords() {
var func = randomFrom([poop, poop2, poop3]);
(func)();
}
答案 1 :(得分:6)
功能就像价值观。你可以说:
var myArray = [
function(){
ionian_c_vi();
},
function(){
ionian_c_iii();
ionian_c_iv()
},
function(){
ionian_c_vi();
ionian_c_i();
}
];
function randomchords(){
randomFrom(myArray).call();
}
有关详细信息,请查看http://www.yuiblog.com/blog/2010/02/24/video-crockonjs-3/和/或阅读https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Call
Bookwise,阅读Javascript:The Good Parts(120页)
帮助在jQuery之外学习JS:)
答案 2 :(得分:1)
你非常接近:
function foo() { ... }
function bar() { ... }
function baz() { ... }
这些函数定义为全局范围,通常在浏览器中为window
。
例如,您可以通过调用window['foo']
来通过字符串访问它们。这将返回foo
函数本身(而不是执行中的值)。
function randomFrom(array) {
return array[Math.floor(Math.random() * array.length)];
}
function randomchords() {
// add the 'window' prefix here
randomFrom(window['foo', 'bar', 'baz'])();
}
答案 3 :(得分:0)
你可以这么做:
但最简单的我认为生成一个随机数,并用case调用函数:)
$("button").click(function)
{
var n = Math.floor(Math.random()*11);
switch(n)
{
case: 0:
Function0();
break;
case: 1:
Function1();
break;
case: 2:
Function2();
break;
...
case: 10:
Function10();
break;
}
使用btn你可以打电话
<button>Get some random chords</button>