多个vars在Javascript中不起作用

时间:2012-08-23 00:10:25

标签: javascript

我正在尝试以英尺和英寸为单位的高度并将其转换为英寸(例如,6'1“将为73”)。当我只有一个选择框(脚盒)时,我可以成功将其转换为英寸。但是,当我添加'inches'变量并尝试将其添加到转换后的'feet'变量时,没有任何反应。

这是脚本:

<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 个答案:

答案 0 :(得分:3)

feetinches是字符串,因此+连接起来。将feet转换为整数,因此6'1"的结果为721(72+"1"

您应该手动转换为整数:

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

编辑:另外,正如João指出的那样,你在第二个上错误地将getElementById弄错了。

答案 1 :(得分:1)

有两个问题。

首先,在这一行

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

您忘记了b的大写。它应该是getElementById

此外,inches来自文本框,这意味着它是一个字符串,所以

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

也将是一个字符串,因为+也是一个字符串连接运算符。由于它是一个字符串,这意味着它的原型中没有toFixed方法。

您可以通过将字符串传递给Number或在+前面添加一个数字来解决此问题,如下所示:

height = Number((feet * 12) + inches);
//OR
height = +((feet * 12) + inches);

答案 2 :(得分:0)

你应该在parseInt函数中包装英尺和英寸的值,以确保它是一个整数。

使用输入type='submit'时,它与type='button'的常规输入有不同的行为,因此您需要将类型更改为button或将return false放在最后您的计算函数

答案 3 :(得分:0)

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

example - jsFiddle