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