2012-04-12 4 views
2

を終了します。問題はそれが早期に終了しているようだということです。見てみましょう。Javascriptが私が作ってるんだコイン投げプログラムのループを持つループ初期

問題は、forループが完了するようになる前に、プログラムがロールを警告していることです。なぜこれをやっているのですか?

+0

console.log(diceRolls)を実行した場合、その値は何ですか? – tcole

+0

その値は10です。 –

+1

警告とは何ですか、何を期待しましたか?その時に見て、私は 'のような何かを期待したいあなたは、4が3回死ぬ両面圧延し、数字1、2、3.3、持っ'あなたは5は、10回を死ぬ両面圧延し、私は –

答えて

2

あなたはそのコード内のいくつかのバグを持っていますが、あなたが見ている行動を説明する一つは、あなたがリセットされていることですrollsの値は、毎回ループを通って最初の文字列に渡されます。

あなたが出て、その行を移動して、あなたは近い値を得るが、あなたはまた、あなたが意図したとおり、(良い名前を選択することは非常に重要である理由です)、むしろdiceRollsより、rollsからrollsMinOneを計算するif文であることを意味したら決して真(文字列マイナス数が値NaN「非数」、と等しくないですので、[さえそのもの!])。

のみ(むしろスタイルやデザインよりも)機能的な問題は、あなたが、あなたはすでに期間でそれを追加した場合でも、最後にコンマで値を追加していることです。

すべて一緒にそれを置く:

var rolls = ("You rolled a " + diceSides + " sided die " + diceRolls + " times, and got the numbers "); 
    for (i=0;i<diceRolls;i++) { 
     var randNum = Math.floor(Math.random()*diceSides)+1; 

     rollMinOne = diceRolls - 1; 
     if (i == rollMinOne) { 
      rolls = (rolls + randNum + "."); 
     } else { 
      rolls = (rolls + randNum + ", "); 
     } 

けれども他の回答が言及として、私はそれは、コードが動作しない理由を理解することが重要だと感じ、同じ結果を得るために簡単かつ迅速な方法があります。

+0

ありがとう、それは私が探しているものです、私はそれを理解したいです。しかも、とにかく練習です。 –

0

私は退屈だし、あなたのコードを実装するには、これは最小限のテストで動作するようです

<script> 
    $(function() { 
     $('#rollDice').click(function() { 

      var diceSides = $('#dice-sides').val(); 
      var diceRolls = $('#roll-count').val(); 

      if (diceRolls.match(/^[\d]*$/)) {  
       if (diceRolls == "") { 
        alert ("Please fill out all forms then try again."); 

       } else { 
        $('#output').text(
         "You rolled a " + diceSides + 
         " sided die " + diceRolls + 
         " times, and got the numbers "); 

        for (i=0; i<diceRolls; i++) { 

         var randNum = Math.floor(Math.random()*diceSides)+1; 

         $('#output').append(randNum); 
        } 
       } 
      } else { 
       alert ("Make sure you only enter numbers and no spaces, then try again."); 
      } 
     }); 
    }); 
</script> 
<form onsubmit="return false;"> 
    <label>Sides</label> 
    <input id="dice-sides" type="text" value="6"> 
    <label>Count</label> 
    <input id="roll-count" type="text" value="1"> 
    <button id="rollDice">Roll</button> 
</form> 
Rolls 
<div id="output"> 

</div> 
+0

onsubmitなしで動作しますか? "false false"? –

関連する問題