多个变量在Javascript中不起作用

多个变量在Javascript中不起作用,javascript,Javascript,我试图取一个以英尺和英寸为单位的高度,并将其转换为英寸(例如,6'1“将是73”)。当我只有一个选择框(英尺框)时,我可以成功地将其转换为英寸。但是,当我添加“inches”变量并尝试将其添加到转换后的“feet”变量时,什么都没有发生 以下是脚本: <script type="text/javascript" language="javascript"> function Calculate() { var feet = document.getElementById(

我试图取一个以英尺和英寸为单位的高度,并将其转换为英寸(例如,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>

函数计算(){
var feets=document.getElementById(“feets”).value;
var inches=document.getElementbyId(“inches”).value;
高度=((英尺*12)+英寸);
document.write('这是您的身高,单位为英寸:'+height.toFixed(0)+'
'); }
以及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.
5.
6.
7.
0
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11


提前感谢

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


当使用输入
type='submit'
时,它的行为与使用
type='button'
的常规输入不同,因此您需要将类型更改为
按钮
,或者在计算函数的末尾放置一个
return false
,您应该在
parseInt
函数以确保它是一个整数


使用输入
type='submit'
时,它的行为与使用
type='button'
的常规输入不同,因此您需要将类型更改为
按钮
,或者在计算函数的末尾添加一个
返回false
英尺
英寸
是字符串,因此,
+
连接。相乘将把
feet
转换为整数,因此
6'1“
的结果将是721(
72+“1”

您应该手动转换为整数:

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

编辑:另外,正如João所指出的,您在第二个字段中错误地大写了
getElementById

Foot
inches
是字符串,因此
+
连接。将
Foots
乘以整数,则
6'1
的结果将是721(
72+“1”

您应该手动转换为整数:

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

编辑:另外,正如João指出的,您在第二个文件中错误地使用了
getElementById

有两个问题

首先,在这方面

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);

有两个问题

首先,在这方面

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);

我知道这可能有点晚了,但我把它放到了JSFIDLE中,稍微整理了一下JS代码(我把它换成了jQuery以获得支持)。也许值得一看


我知道这可能有点晚了,但我把它放到了JSFIDLE中,稍微清理了一下JS代码(我把它换成了jQuery以获得支持)。也许值得一看


文本框值的类型是什么?您的代码中也有一个输入错误,它是带大写B的getElementById。文本框值的类型是什么?您的代码中也有一个输入错误,它是带大写B的getElementById。谢谢!我想是这么简单。谢谢!我想是这么简单。