基础JavaScript华氏度/摄氏度计算器

4

我正在尝试制作一个摄氏度/华氏度转换计算器,每个转换都有一个按钮,结果将显示在相应的文本框中。我肯定是漏掉了一些显而易见的东西...我刚开始接触javascript,还没有完全理解。以下是我目前所做的:

<!DOCTYPE html>
<html>
    <head> 
        <meta charset = "utf-8"/>
        <title>Convert Fahrenheit and Celsius</title>
        <script type="text/javascript">
            <!--
                function convertToC() {
                    var fTempVal = parseFloat(document.getElementById('fTemp').value);
                var cTempVal = (fTempVal - 32) * (5/9);
                document.getElementById('cTemp').value = cTempVal;
            }

            function convertToF() {
                var cTempVal = parseFloat(document.getElementById('cTemp').value);
                var fTempVal = (cTempVal * (9/5)) + 32;
                document.getElementById('fTemp').value = fTempVal;
            }
        // -->
    </script>
    </head>
    <body>
    <form name="conversionForm">
    <table border="1">
    <tbody>
    <tr>
        <td>Fahrenheit</td>
        <td><input name="fTemp" type="text"/></td>
        <td><button onclick="convertToC">Convert to Celsius</button></td>
    </tr>
    <tr>
        <td>Celsius</td>
        <td><input name="cTemp" type="text"/></td>
        <td><button onclick="convertToF">Convert to Fahrenheit</button></td>
    </tr>
    </form>
    </tbody>
    </table>
</body>
</html>

6
那么问题是什么? - Madbreaks
它要么没有进行计算,要么就是没有在文本框中显示...我无法弄清楚是哪个问题。或者可能两个问题都存在? - Jessica Walker Sanchez
2个回答

9

您有几个错误。请查看已更正的jsFiddle示例

  1. 您的输入框缺少ID,而您试图使用document.getElementById引用它们。
  2. 您的HTML标签未正确闭合。
  3. 您的按钮缺少类型,这会使它们默认为提交按钮(submit),而您实际上只想要普通按钮。
  4. 为了防止表单被实际提交,您应该返回false。

JavaScript

    function convertToC() {
        var fTempVal = parseFloat(document.getElementById('fTemp').value);
        var cTempVal = (fTempVal - 32) * (5 / 9);
        document.getElementById('cTemp').value = cTempVal;
        return false;
    }

    function convertToF() {
        var cTempVal = parseFloat(document.getElementById('cTemp').value);
        var fTempVal = (cTempVal * (9 / 5)) + 32;
        console.log(fTempVal);
        document.getElementById('fTemp').value = fTempVal;
        return false;
    }

HTML

<form name="conversionForm">
    <table border="1">
        <tbody>
            <tr>
                <td>Fahrenheit</td>
                <td>
                    <input name="fTemp" id="fTemp" type="text" />
                </td>
                <td>
                    <button type="button" onclick="convertToC();return false">Convert to Celsius</button>
                </td>
            </tr>
            <tr>
                <td>Celsius</td>
                <td>
                    <input name="cTemp" id="cTemp" type="text" />
                </td>
                <td>
                    <button type="button" onclick="convertToF();return false">Convert to Fahrenheit</button>
                </td>
            </tr>
        </tbody>
    </table>
</form>

1
你正在使用 document.getElementById() 函数查询DOM,但是两个 input 元素目前都没有 id 属性,只有一个 name 属性。因此,在你的示例中,实际上没有与函数传递的 ID 匹配的元素。
你应该像这样设置两个元素的 id 属性:
<input id="fTemp" name="fTemp" type="text">

<input id="cTemp" name="cTemp" type="text">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接