2016-07-30 31 views
1

我想使這個1種功能,並調用它在功能2.JS在功能上簡單的功能將無法正常工作

function d6Roll(){ 
      var d6 = 1 + Math.floor(Math.random() * 6); 
      } 
function attackModifier(){ 
       d6Roll(); 
       var aMod = d6; 
       document.getElementById("rezultatD6").innerHTML = aMod; 
      } 

出於某種原因,它只能是這樣的:

function d6Roll(){ 
      var d6 = 1 + Math.floor(Math.random() * 6); 
      document.getElementById("rezultatD6").innerHTML = d6; 
      } 

是有可能該功能不能進入另一個功能?

+0

問題解決了,很抱歉打擾你的人與基本顯然我錯過了>< –

回答

2

我想你想的第一個函數改變這個

function d6Roll(){ 
    return 1 + Math.floor(Math.random() * 6); 
} 

,這樣就可以調用它的第二個功能是這樣

function attackModifier(){ 
    var aMod = d6Roll(); 
    document.getElementById("rezultatD6").innerHTML = aMod; 
} 
1

函數不能進入另一個函數嗎?

這是完全可能的,你只是做得不對。變量不能'逃避'他們的範圍(在這種情況下,他們在裏面),所以你不能從attackModifier函數訪問d6。相反,返回值,就像這樣:

function d6Roll(){ 
    return 1 + Math.floor(Math.random() * 6); 
} 

然後,您可以得到卷的價值是這樣的:

function attackModifier(){ 
    var aMod = d6Roll(); 
    document.getElementById("rezultatD6").innerHTML = aMod; 
} 

MDN documentation可能有關於函數如何返回工作一些有用的解釋。

+1

感謝您參考 –

1

對於您在attackModifier得到d6變量函數,您需要在d6Roll函數之外創建此變量。

樣子:

var d6; 

function d6Roll() { ... } 
function attackModifier() {...} 
+1

我找別人解決方案更好,但你寫到這裏將是至關重要的,我後來,我想我將不得不調查JS中的私人/全局變量,並進一步,謝謝:) –

+0

雖然這種方法肯定會工作(在嚴格的條件下),積極鼓勵一個不好的做法似乎是一個壞主意像這樣,不是嗎? –

+0

是的,這不是一個好的做法,依賴於情況,也許可以把代碼放在IIFE中以使私有 – Lai32290