2016-08-14 5 views
-2

jslint.comとjshint.comでjavascriptコードをチェックしたところ、エラーはないと言います。しかし何らかの理由で、私のコードは私が望むものに走っていません。 while文のいずれかが動作していないか、while文の後に停止しているようです:Javascriptは関数全体を実行しません(JSLIntは言及しません)

   function aMode() { 
    
    personData(); 
    
    if (Enchance1.value == 10) { 
    Taken = Taken + (1.25 * EnhanceLevel1.value); 
     
    } 
    
    if (Enhance1.value == 20) { 
    Taken = Taken + (EnhanceLevel1.value * 1.37); 
    
    } 
    
    if (Enhance2.value == 10) { 
    taken2 = t 


---------- 


Taken2 + (1.25 * EnhanceLevel2.value); 
     
    } 
    
    if (Enhance2.value == 100) { 
    Taken2 = Taken2 + (EnhanceLevel2.value * 1.37); 
     
    } 
    
    while (HP1 <= 0) { 
     HP1 = HP1 - Taken2; 
     tries1 = tries1 + 1; 
  
    } 
    
    while (HP2 <= 0) { 
     HP2 = HP2 - Taken1; 
     tries2 = tries2 + 1; 
  
    } 
    
    if (tries1 > tries2) { 
     //document.getElementById('personWon').innerHTML = person1.value; 
     alert(person1.value + "won!"); 
    } else if (tries1 < tries2) { 
     //document.getElementById('personWon').innerHTML = person2.value; 
     alert(person2.value + "won!"); 
    } 
    
    //alert("test"); <- test 
   } 

問題は、HTMLで、それがボタンで機能を実行したときの文の場合、それだけで動作します、です最初のwhileステートメント私はalert("test")を最後に付けてコード全体を実行するかどうかを確認するので、これを知っています。それ以来私は正しく機能を綴っていることを知っている、私はalert("test")を置く場合、それは動作します。ボタンのコードは、<button id="typeMode" onclick="aMode()">Click me!</button>です。具体的には、あるクラスのdivにあります。私が言いましたもう一つは、「厳格な使用」でした。私のjavascriptコードの最初の行に。

私は間違った構文を使用していますか?それは私がセミコロン ';'か何か?

ご協力いただきましてありがとうございます。

+2

あなたの 'alert()'文は、特定の条件でのみ実行されます。多分、それらの条件が満たされていないでしょうか? 'while 'ループも特定の条件下でのみ実行されます。これをデバッガで実行し、実際の実行時動作が何であるか、変数のランタイム値が何であるかを確認します。 "それは全体の機能を実行していない"は、非スターターのようなものです。それは実行するように指示されたコードを正確に実行しています。 – David

+0

しかし、最後の2つのifステートメントのいずれかが満たされなければなりません。 player1が勝ったか、player2が勝ったかのいずれか。 – Christian

+1

'hits1 == hits2'以外の場合、どちらの条件も満たされません。これは、デバッグが推測や推測よりもはるかに優れている理由です。 – David

答えて

3

HPで、より小さいか、0である場合、ループが実行されています。おそらく比較を交換したいと思うでしょう。

while (HP1 >= 0) { 
     HP1 = HP1 - damageTaken2; 
     hits1 = hits1 + 1; 

    } 

    while (HP2 >= 0) { 
     HP2 = HP2 - damageTaken1; 
     hits2 = hits2 + 1; 

    } 

    if (hits1 > hits2) { 
     //document.getElementById('playerWon').innerHTML = player1.value; 
     alert(player1.value + "won!"); 
    } else if (hits1 < hits2) { 
     //document.getElementById('playerWon').innerHTML = player2.value; 
     alert(player2.value + "won!"); 
    } else { 
     alert("draw!"); 
    } 
+0

私のエディタはループを無視します... XDしかし、ありがとう! Lemmeそれを試してください – Christian

+0

さてお...私はそれを試したが、それは何もしない.....参照してください。出力:none ...私は最後に警告を出しても。 – Christian

+0

これは正しい答えだと思います。 HP1が0より大きい場合、ループはスキップされます。 HP1が0以下の場合、ループは無期限に実行されます。 –

関連する問題