我正在尝试以英尺和英寸为单位的高度并将其转换为英寸(例如,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()" />
提前致谢
答案 0 :(得分:3)
feet
和inches
是字符串,因此+
连接起来。将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)。可能值得一试。