2014-10-01 125 views
1

我不知道這是否是重複或沒有,但我無法找到關於該主題的帖子..傳遞變量多種功能

我想傳遞一個數組對象多種功能。我知道你通常做這樣的事情:

function name(values){ 
    var values ={ 
     name : "John", 
     lastname: "Doe" 
    } 
    sayHello(values){ 
     alert(values.name); 
    } 
} 

但在這種情況下,這是行不通的。數組對象像上面的代碼片段一樣傳遞,並且它工作正常。但是當我後來想在不同的函數中使用它時,我得到的錯誤是該變量未定義。這是我的代碼:

function createValues(values){ 
    var values = {left:  (Math.floor((Math.random()*10)+1)), 
        right: (Math.floor((Math.random()*10)+1)), 
        bottom: (Math.floor((Math.random()*10)+1)), 
        top:  (Math.floor((Math.random()*10)+1)) 
      }; 
    displayValues(values); 
} 

function displayValues(values){ 
    document.getElementById("left").innerHTML = values.left; 
    document.getElementById("right").innerHTML = values.right; 
    document.getElementById("bottom").innerHTML = values.bottom; 
    document.getElementById("top").innerHTML  = values.top; 
    // The values are getting passed to this function 
} 

function calcScore(p1_choice, values){ 
    if(p1_choice == "left"){ 
     score += values.left 
     // Can't access the variables here 
    } 
} 

calcScore函數在單擊按鈕後被另一個函數調用。我試圖讓價值觀成爲全球性的,但這並沒有幫助。 我不知道如何將變量傳遞給calcScore函數,任何人都可以幫忙嗎?

+2

介紹如何調用'calcScore'。 – dfsq 2014-10-01 12:30:18

+0

當用戶點擊一個按鈕'determineChoice'時,調用'getCpuChoice(cpuChoice)'並從那裏'calcScore(p1_choice,cpuChoice,values)'調用 – user3164891 2014-10-01 12:33:17

+0

你會得到什麼錯誤?你在這裏給出的代碼看起來很好。 – Neo 2014-10-01 12:33:52

回答

0

試着改變你的calcScore功能,這

function calcScore(p1_choice){ 
    var values = {left:  (document.getElementById("left").innerHTML), 
        right: (document.getElementById("right").innerHTML), 
        bottom: (document.getElementById("bottom").innerHTML), 
        top:  (document.getElementById("top").innerHTML) 
     }; 
    if(p1_choice == "left"){ 
     score += values.left 
     // Can't access the variables here 
    } 
}