2012-08-14 3 views
2

저는 Javascript를 처음 사용하고 배우고 있습니다. 임의의 기능을 활성화하는 버튼을 설정하려고합니다. 버튼이 좋고 getGroupOne()을 버튼에 할당하거나 getGroupTwo()를 버튼에 할당하면 잘 동작합니다.자바 스크립트, 배열 및 함수 - 배열의 마지막 요소 만 작동합니다.

유일한 문제는 다음 코드의 어딘가에 있습니다.

내가) 내 버튼 만 getGroupTwo을 (클릭 다음 코드를 사용하여 작동

음,

function getGroup() { 
    var Group = new Array (getGroupOne(), getGroupTwo()); 
    var whichOne = Math.floor(Math.random()*Group.length); 
     return Group[whichOne];}; 

하지만 그들을 플립 때 ... 만 getGroupOne()는 다음 코드와 함께 작동,

function getGroup() { 
    var Group = new Array (getGroupTwo(), getGroupOne()); 
    var whichOne = Math.floor(Math.random()*Group.length); 
     return Group[whichOne];}; 

누군가가 내게 어떤 문제인지 알려주겠습니까? 몇 가지 대답을 살펴 보았지만이를 해결하는 방법은 확실하지 않았습니다.

당신이 이런 식으로 작성해야,

+1

는 당신이 대신 배열의 기능의 배열을 가지고 원하는 수 있을까 어떤 이 함수는 반환합니까? 그것은'var Group = [getGroupTwo, getGroupOne];'이 될 것입니다. 그러나 당신은'getGroup'의 반환 값으로 무엇을하고 있는지 보여주지 않으므로 알기가 어렵습니다. 어쨌든 상한을 포함하는 범위에서 임의의 숫자를 원하면 'Math.random() * (Group.length + 1))'을 추가해야합니다. https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/random을 참조하십시오. –

+0

@FelixKling이 맞을 것 같습니다. 당신은'var Group = [getGroupTwo, getGroupOne]; '을 원한다면,'getGroup()()'을 호출 할 것이다. 먼저'()'는 두 개의 함수 중 하나를 받기 위해'getGroup'을 호출하고, 함수를받은 다른'()'을 호출합니다. – Imp

+0

* 편집 : * 내 의견의 마지막 부분을 긁어 내 다른 곳에서 내 생각으로했다. –

답변

1

당신이 함수 참조를 반환 할 경우, 감사합니다

function getGroup() 
{ 
    var Group = [getGroupOne, getGroupTwo], 
    whichOne = Math.floor(Math.random() * Group.length); 

    return Group[whichOne]; 
} 

getGroup()(); 
+0

아, 그건 완전히 다른 작품들로 벽에 머리를 두드렸다. 대단히 고마워. 너 한테 빚 졌어. – Jeff

+0

@ 제프 기꺼이 도와주세요 :) –

관련 문제