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>
4

2 に答える 2

9

いくつかのエラーがあります。この修正されたjsFiddleの例を参照してください。

  1. 入力ボックスに、参照しようとしていたIDがありませんでしたdocument.getElementById
  2. HTMLが不適切に閉じられました。
  3. ボタンにタイプがないため、ボタンだけが本当に必要なときにデフォルトで送信されます
  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>
于 2013-02-27T21:09:39.160 に答える
1

関数を使用してDOMにクエリを実行していますが、現在document.getElementById()、両方のinput要素に属性がidなく、属性のみがありnameます。したがって、この例では、関数に渡すIDと実際に一致する要素はありません。

id次のように、両方の要素の属性を設定する必要があります。

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

<input id="cTemp" name="cTemp" type="text">
于 2013-02-27T21:08:29.713 に答える