0

我正在尝试采用以英尺和英寸为单位的高度并将其转换为英寸(例如,6'1" 将是 73")。当我只有一个选择框(英尺框)时,我可以成功地将其转换为英寸。但是,当我添加“英寸”变量并尝试将其添加到转换后的“英尺”变量中时,什么也没有发生。

这是脚本:

<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在第二个上大写错误。

于 2012-08-23T00:15:55.373 回答
1

有两个问题。

首先,在这一行

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'因此您需要将类型更改为button或将 areturn false放在计算函数的末尾

于 2012-08-23T00:14:56.747 回答
0

我知道这可能有点晚了,但我把它扔进了 jsFiddle 并稍微清理了 JS 代码(我把它换成了 jQuery)。这可能值得一试。

示例 - jsFiddle

于 2012-08-23T00:30:04.197 回答