2017-12-04 14 views
-2

内部スイッチ内部の機能は、私はランダムな結果を返す機能を持つことだし、その結果に応じて、私は別の関数を呼び出すようにしたいが、それは今は動作しません:コールだから、機能

$(document).ready(function() { 
    $('#classbutton').click(function() { 
     $('#resultclass').text(classX()); 
}); 
}); 

function subkrieger() { 
    var subkriegerNumber = Math.floor((Math.random()*2)+1); 
     switch (subkriegerNumber) { 
      case 1: 
       return "Berserkerin"; 
      case 2: 
       return "Duellantin"; 
      } 
} 

function classX() { 
    var classNumber = Math.floor((Math.random()*2)+1); 
     switch (classNumber) { 
      case 1: 
       return "Kriegerin"; 
       return subkrieger(); 
      case 2: 
       return "Mystikerin"; 
     } 
} 

    <button id="classbutton">Archetyp</button> 
    <div id="resultclass" class="results"></div> 

したがって、最初の関数は2番目の関数のサブファンタジークラスを取得するためのもので、ファンタジーrpgクラスをランダムに返します。私はそれを試して2番目の関数のケース1で1番目の関数を呼び出そうとしましたが、何も起こっていません。 私は何が間違っていますか?

おそらく、スイッチをたくさん持っているよりもはるかにエレガントにこれを行う方法がありますか?

+0

まだあなたの問題を示し、最小限の例を提供してください – mrCarnivore

+0

私は最小限のコードを追加しました。 – Candacis

+0

最小限のコード量ではありません! – mrCarnivore

答えて

1

これはあなたの問題です:

return "Krieger"; 
return subkrieger();     
break; 

あなたは、その関数の実行を終了する文字列を、戻ってきているので、あなたがsubkrieger()コールに取得することはありません。

return "Krieger"行を削除すると、電話がかかります。

return "Krieger " + subkrieger(); 

またはES6スタイルでの:

return `Krieger ${subkrieger()}`; 

サイドノート:後break;を有するあなたは、両方(Krieger Berserkerinのようなものを言うように、あなたは(連結したいと思うでしょうが)、それらを一緒に追加したい場合それはとにかく休憩を得ることは決してないだろうからreturnはそうちょうどそれを残してみませんか、冗長である:。

case: 
    return "Krieger"; 
+0

お返事ありがとうございます、私は間違いを見ましたが、あなたの解決策は機能しません。それは返す: "Krieger" + subkrieger() – Candacis

+0

私の最初の一例で、それを残念、typo。それはバッククイックを持つべきではありません。それを私が直した。 – samanime