0

フィートとインチで指定された高さを取り、それをインチに変換しようとしています (例: 6'1" は 73" になります)。選択ボックス (フィート ボックス) が 1 つしかない場合でも、インチに正常に変換できます。しかし、「インチ」変数を追加して、変換された「フィート」変数に追加しようとしても、何も起こりません。

スクリプトは次のとおりです。

<script type="text/javascript" language="javascript">

function Calculate() {

    var feet = document.getElementById("feet").value;
    var inches = document.getElementbyId("inches").value;

    height = ((feet*12) + inches);

    document.write ('This is your height in inches:<b>   ' + height.toFixed(0) + '</b><br>');
}


</script>

そしてHTML:

<div class="form">
Height:
<select id="feet">
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
</select>

<select id="inches">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</option>
  <option value="10">10</option>
  <option value="11">11</option>
</select>
<br />
<input type="submit" value="Calculate" onclick="Calculate()" />

前もって感謝します

4

4 に答える 4

3

feetinchesは文字列なので、+連結します。キャストfeetを整数に乗算すると、 の結果は6'1"721 になります ( 72+"1")

手動で整数に変換する必要があります。

feet = parseInt(feet,10);
inches = parseInt(inches,10);

編集: また、João が指摘したようgetElementByIdに、2 つ目の大文字を間違えました。

于 2012-08-23T00:15:55.373 に答える
1

2 つの問題があります。

まず、この行で

var inches = document.getElementbyId("inches").value; 

を大文字にするのを忘れましたb。である必要がありますgetElementById

また、inchesテキストボックスから取得されます。つまり、文字列であるため、

height = ((feet * 12) + inches);  

+も文字列連結演算子であるため、文字列になります。toFixedこれは文字列なので、プロトタイプにメソッドがないことを意味します。

Number次のように、文字列を に渡すか、先頭に a+を追加して数値にすることで、これを修正できます。

height = Number((feet * 12) + inches);
//OR
height = +((feet * 12) + inches);
于 2012-08-23T00:17:43.350 に答える
0

関数でフィートとインチの値をラップしてparseInt、整数であることを確認する必要があります。

入力を使用する場合type='submit'、通常の入力とは動作が異なるtype='button'ため、型をに変更するか、計算関数の最後にbuttona を配置する必要がありますreturn false

于 2012-08-23T00:14:56.747 に答える
0

これが少し遅れるかもしれないことはわかっていますが、これを jsFiddle に投げ込み、JS コードを少しクリーンアップしました (キックのために jQuery に交換しました)。チェックしてみる価値があるかもしれません。

例 - jsFiddle

于 2012-08-23T00:30:04.197 に答える