8

私はランダムな関数を実行しようとしていますが、それを完全には理解していません:

<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>

私は正しい方向に進んでいますか?

4

4 に答える 4

9

1 つのオプションは、windowオブジェクトを使用することです。

function randomchords() {
    var func = randomFrom(['poop', 'poop2', 'poop3']);
    window[func]();
}

配列内の関数名から括弧を削除する必要があることに注意してください。


別のオプションは、上記のバリアントから引用符を削除し、関数を直接呼び出すことです。

function randomchords() {
    var func = randomFrom([poop, poop2, poop3]);
    (func)();
}
于 2012-05-21T22:30:00.113 に答える
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/関数/呼び出し

Bookwise, read Javascript: The Good Parts (120 ページ)

jQueryの外でJSを学ぶのに役立ちます:)

于 2012-05-21T22:35:12.823 に答える
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'])();
}               
于 2012-05-21T22:36:05.693 に答える
0

これは多くの方法で行うことができます:

しかし、乱数を生成し、ケースで関数を呼び出すのが最も簡単だと思います:)

$("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>
于 2012-05-21T22:33:08.390 に答える