2016-06-15 5 views
0

私のコードの周囲は常に2020 4040のように戻ってくるので、なぜ変数が両方の数値であるのかわかりません。私はそれがかなり単純な修正だと知っていますが、私はそれを理解できません。私はparseIntを試みたが、それはどちらもうまくいかなかった。誰かが私の周りに幅と高さのために10と10を使って40と言うように追加または変更する必要があることを私に説明するのを助けることができますか?なぜ私の変数は一緒に追加されるのではなく、お互いにつながりますか?

<head> 
    <meta charset="utf-8" /> 
</head> 

<body> 
    <p>Click the button to calculate the area and perimeter of a rectangle.</p> 

    <button onclick="myFunction()">Try it out!</button>  

    <script> 
     function myFunction() { 
      var width = prompt("Please enter a width", " "); 
      var height = prompt("Please enter a height", " "); 
      var area = width * height; 
      var perimeter = (width + height) * 2; 

      if (width != null && height != null) { 
       alert("The area is " + area + " and the perimeter is " + perimeter + "."); 
      } 
     } 
    </script> 

</body> 

</html> 
+1

'prompt'は常に文字列を返し、' + 'は文字列を連結するために使用されます。数を行う前に数値を数値に変換します。 – Teemu

+1

prompt()は 'String'を返します。文字列の+演算子は、文字列連結と同じです。幅と高さを 'Number'に変換する必要があります。 –

+0

私は** this **:http://jsbin.com/xuzijopade/1/edit?js,output – balexandre

答えて

0

追加のparseIntはint型へのプロンプト文字列を解析します。数学は正しく動作します。 (文字列に+を使用すると文字列を連結し、望む通りに追加しません)。

<head> 
    <meta charset="utf-8" /> 
</head> 

<body> 
    <p>Click the button to calculate the area and perimeter of a rectangle.</p> 

    <button onclick="myFunction()">Try it out!</button>  

    <script> 
     function myFunction() { 
      // Make sure your prompt is parses as an int. 
      var width = parseInt(prompt("Please enter a width", " ")); 
      var height = parseInt(prompt("Please enter a height", " ")); 
      var area = width * height; 
      var perimeter = (width + height) * 2; 

      if (width != null && height != null) { 
       alert("The area is " + area + " and the perimeter is " + perimeter + "."); 
      } 
     } 
    </script> 

</body> 

</html> 
0

prompt常に文字列を返します。 +を実行する前に番号に変換する必要があります。それ以外の場合は、連結するだけです。

あなたは私はあなたが望んでいたと仮定して

var height = prompt("Please enter a height", " "); 

は、代わりに20のための数値の、20の文字列値を取得するためです

var width = parseFloat(prompt("Please enter a width", " ")); 
0

あなたが肯定的であれば、それは常に数として戻ってきます。 1.することにより、複数のそれによって数になるため、それを強制はhttps://jsfiddle.net/ktaacx92/

var width = prompt("Please enter a width", " ") * 1; 
var height = prompt("Please enter a height", " ") * 1; 

を参照してくださいしかし、私は、迅速なフォームをお勧めします。

0

の前にプラス記号(+)を置きます。これは、入力を数値としてキャストします。 (コードペン:http://codepen.io/anon/pen/jrryBP)。

JS:あなたのプロンプトの周り

function myFunction() { 
    var width = +prompt("Please enter a width", " "); 
    var height = +prompt("Please enter a height", " "); 
    var area = width * height; 
    var perimeter = (width + height) * 2; 
    if (width != null && height != null) { 
    alert("The area is " + area + " and the perimeter is " + perimeter + "."); 
    } 
} 
+0

のような何かをしますcharを入力すると動作しません:) – balexandre

+0

OPの要求は、有効な数値の変換に焦点を当てています文字列を数値に変換します。この投稿は、上記のデータの検証には対処していない。 – DRD

関連する問題