【问题标题】:Is there a limit to the number of javascript functions per HTML file?每个 HTML 文件的 javascript 函数数量是否有限制?
【发布时间】:2013-06-30 07:24:58
【问题描述】:

我有一个 HTML5 文件,它直接在 HTML 文件中包含 javascript(由咖啡脚本制成)(我更喜欢以这种方式进行 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 &lt;DevynCJohnson@Gmail.com&gt; (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>

【问题讨论】:

  • @PaulOsborne,感谢您收听。
  • 我认为可以安全地假设,如果有限制,则超过 3...

标签: javascript html coffeescript


【解决方案1】:

始终检查您的 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);

【讨论】:

  • 哇! JS 代码有效,我的代码看起来和运行得更好!谢谢。
  • 我不能接受这个答案,直到九分钟过去,或者服务器说。我会接受这个答案。
猜你喜欢
  • 2010-10-26
  • 2022-01-10
  • 2012-03-06
  • 2018-01-15
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多