JavaScript& DOM逻辑看起来正确但不能正确运行

时间:2013-03-03 20:47:52

标签: javascript dom logic

如果ftemp中没有内容,我想要做的就是禁用按钮。如果有,我希望按钮启用并检查它是否为数字。然后我可以将ftemp发送到下一页。我的HTML:

<!DOCTYPE html> 
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript">

            function content()
            {
                var ftemp = document.getElementById("ftemp");
                if (ftemp.value=="")
                {
                    var convert = document.getElementById("convert").disabled=true;
                    document.getElementById("error").innerHTML = "";
                }
                else
                {
                    isNumeric()
                }
            }
            function isNumeric()
            {
                var ftemp = document.getElementById("ftemp");
                if (isNaN(ftemp))
                {
                    var convert = document.getElementById("convert").disabled=true;
                    document.getElementById("error").innerHTML = "Enter only numbers";
                }
                else 
                {
                    var convert = document.getElementById("convert").disabled=false;
                    document.getElementById("error").innerHTML = "";
                }
            } 

        </script>
    </head>
    <body onload="content()">
        <form method="get" action="celsius">
            <p>
                <label>
                    Enter a temperature in Fahrenheit:
                </label>
            </p>
            <p>
                <input required id="ftemp" title="Enter only numbers!" size="3"
                    maxlength="3" onkeyup="content()"/>
                <button id="convert" name="convert">Convert to Celsius</button>
            </p>
            <p id="error" name="error">

            </p>
        </form>
    </body>
</html>

2 个答案:

答案 0 :(得分:3)

内部isNumeric()

您正在检查:isNaN(ftemp)其中ftemp是一个DOM元素,因此它不能是数字。更改为isNaN(parseInt(ftemp.value, 10))

答案 1 :(得分:1)

这里有错误:

if (isNaN(ftemp))

将其更改为:

if (isNaN(ftemp.value))

ftemp是一个DOM对象。你需要在这里传递值。

小提琴:http://jsbin.com/ocibuc/2