我有一个HTML5文件,它直接在HTML文件中包含javascript(由coffeescript制作)(我更喜欢用这种方式进行HTML / js编程)。有四种JS功能可将一个温度单位转换为另一个温度单位。代码不会显示任何输出。但是,如果删除第四个函数(r2k()),则所有输入框(第四个除外)现在都可以工作。我不知道r2k()中是否存在我忽略的错误,或者JS中是否存在某些功能限制。
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>Temperature Conversions</title></head>
<!--Made by Devyn Collier Johnson <DevynCJohnson@Gmail.com> (2013); Javascript made with Coffeescript-->
<body>
<script type="text/javascript">
function k2c() { //Kelvin to Celsius
var x;
x = parseInt(document.querySelectorAll('input[name="k2c_input"]')[0].value) - 273.15;
alert(x.toFixed(2));
}
function c2k() { //Celsius to Kelvin
var x;
x = parseInt(document.querySelectorAll('input[name="c2k_input"]')[0].value) + 273.15;
alert(x.toFixed(2));
}
function f2k() { //Fahrenheit to Kelvin
var x;
x = (parseInt(document.querySelectorAll('input[name="f2k_input"]')[0].value) + 459.67) * (5 / 9);
alert(x.toFixed(2));
}
function r2k() { //Rankine to Kelvin
var x;
x = parseInt(document.querySelectorAll('input[name="r2k_input"]')[0].value * (5 / 9);
alert(x.toFixed(2));
}
</script>
<h1>Temperature Conversions</h1><h6>Made by Devyn Collier Johnson <DevynCJohnson@Gmail.com> (2013)</h6>
<form method="get" onsubmit="return false">
<p>Kelvin to Celsius</p>
<input type="text" name="k2c_input" value="" placeholder="KELVIN" id="k2c_input"/>
<button name="k2c_button" id="k2c_button" onClick="k2c()">Solve</button>
<p>Celsius to Kelvin</p>
<input type="text" name="c2k_input" value="" placeholder="CELSIUS" id="c2k_input"/>
<button name="c2k_button" id="c2k_button" onClick="c2k()">Solve</button>
<p>Fahrenheit to Kelvin</p>
<input type="text" name="f2k_input" value="" placeholder="FAHRENHEIT" id="f2k_input"/>
<button name="f2k_button" id="f2k_button" onClick="f2k()">Solve</button>
<p>Rankine to Kelvin</p>
<input type="text" name="r2k_input" value="" placeholder="RANKINE" id="r2k_input"/>
<button name="r2k_button" id="r2k_button" onClick="r2k()">Solve</button>
<br/><br/><br/><br/><input type="reset" value="Clean Boxes"/>
</form>
</body>
</html>
答案 0 :(得分:4)
始终检查您的JS控制台。这一行缺少一个括号:
x = parseInt(document.querySelectorAll('input[name="r2k_input"]')[0].value * (5 / 9);
^
如果您刚刚获得选择器匹配的第一个元素,请使用querySelector
代替querySelectorAll
:
document.querySelector('input[name="r2k_input"]').value
另外,将一个基数参数传递给parseInt
。没有它,具有前导零的数字将被某些浏览器解释为八进制:
parseInt(..., 10);