2012-11-18 47 views
0

我想调用另一个jQuery函数并传递另一个参数 - 我传递的参数取决于传递给原函数的参数的名称。所以我可能有这样的事情:如何检查哪个参数已被传递给函数

matchedNumbers1 = compareArrays(userNumbers, winningNumbers1, matchedNumbers1); 
matchedNumbers2 = compareArrays(userNumbers, winningNumbers2, matchedNumbers2); 
matchedNumbers2 = compareArrays(userNumbers, winningNumbers3, matchedNumbers2); 

//COMPARE INPUTTED ARRAY OF NUMBERS TO WINNING ARRAYS OF NUMBERS 
    function compareArrays (userInput, winningNums, matches) { 
     matches = 0; 
     allMatchedNumbers.length = 0; 
     $(userInput).each(function(i) { 
      $(winningNums).each(function(j) { 
       if (userInput[i] == winningNums[j]) { 
        allMatchedNumbers[matches] = userInput[i]; 
        matches++; 
       } 
      }); 
     }); 
     switch (winningNums) { 
      case 'winningNumbers1': 
       alert("!!!!!"); 
       markMatches(ListItems1); 
       break; 
      case 'winningNumbers2': 
       markMatches(ListItems2); 
       break; 
      case 'winningNumbers3': 
       markMatches(ListItems3); 
       break; 
     } 
     return matches; 
    } 

希望上面的代码说清楚我在做什么。我尝试使用switch语句,但它只比较传递给该函数的原始参数的值而不是名称。任何帮助,将不胜感激。

+0

你的意思是在参数传递的变量的名称:只是你要匹配的另一种说法的数组中传递?我不认为你可以这样做 –

+1

如果你描述你的_problem_,而不仅仅是你试图用来解决它的方法,这将是非常好的。 – raina77ow

回答

1

即使可以,您也不应这样做。

function compareArrays(userInput, winningNums, matches, listToMark) { 
    ... 

    markMatches(listToMark) 
} 
+0

或者,也许可以创建一个对象,其中包含'winningNums,matches,listToMark'属性,并将其传入而不是三个相关的参数。 –

0
function winningNumbers1(){ 
    var result = 1; 
    return {result:result, fname: 'winningNumbers1'}; 
} 

function winningNumbers2(){ 
    var result = 2; 
    return {result:result, fname: 'winningNumbers2'}; 
} 

function compareArrays (userInput, winningNums, matches) { 
    var result = winningNums ? winningNums() : null; 
    if(result) 
    switch(result.fname){ 
     case 'winningNumbers1': 
     // action 
      break; 
     case 'winningNumbers2': 
     // action 
      break; 
    } 
}