2012-01-02 23 views
2

私はJavascriptの初心者ですので、以下のコードを実行することはできません。ボタンをクリックすると、何も起こりません。誰かが私が間違っていたことを指摘できましたか?ありがとう!実行するjavascript関数を取得できません

<html> 
<head> 
<title>Sarah's Puppy Game</title> 
</head> 
<body> 
    <div id="input"> 
     <input id="puppyNumber" size=30> 
     <button onClick="doLoop()"> Get your puppies </button> 
    </div> 
    <script type="text/html"> 
     function doLoop() { 
     var number = document.getElementById('puppyNumber').value; 
      var puppy = []; 
      while (var i = 0; i < parseInt(number); i++) { 
       puppy = puppy.push('puppy<br>'); 
      } 
      alert(puppy); 


     } 
    </script> 
</body> 
</html> 
+0

は何が起こることを期待していますか? –

+0

単語puppyをポップアップするアラートボックスに入力回数を入力した – user1086348

+0

「何も起こらない」ときに試すことができるもの:1)ブラウザのJavaScriptエラーログを確認する2)警告文を追加して垣間見る何が起こっているのか –

答えて

1

の代わりに...

puppy = puppy.push('puppy<br>'); 

...ちょうど言って...

puppy.push('puppy<br>'); 

push戻り押された要素ではなく、それが押されたために、アレイ。

コードでは、変数puppyに文字列"puppy<br>"が設定されます。その後、あなたは"puppy<br>".push("puppy<br>")をしようとしますが、それは明らかに無効です。

+0

コードにはさらに問題がいくつかあります:-) –

+0

マイケルの答えはより完全な答えです。私はそのようにマークしました。 –

+0

皆さん、本当にありがとうございます! javascriptではwhileループよりもforループを使用する理由がありますか? – user1086348

5

3つの問題があります。

  1. まず、あなたのループでforwhileを変更、<script type='text/javascript'>

  2. 秒間text/javascriptを使用しています。 A whileループは条件に対してテストするためのものですが、カウンタを設定しています。

  3. Thrid puppypush()メソッドを割り当てないでください。 .push()は配列に直接作用します。

Here's the corrected version in action.

<!-- type="text/javascript" not "text/html" --> 
<script type="text/javascript"> 
    function doLoop() { 
    var number = document.getElementById('puppyNumber').value; 
     var puppy = []; 

     // This is a for loop, rather than a while loop 
     // Also for good measure, use the second param to parseInt() for a 
     // decimal radix to avoid getting binary or octal numbers accidentally. 
     for (var i = 0; i < parseInt(number, 10); i++) { 
      // Don't assign the result back to puppy 
      puppy.push('puppy<br>'); 
     } 
     alert(puppy); 


    } 
</script> 
関連する問題