javascript if-else循环没有到达else

标签 javascript if-statement

我现在正在学习有关表单验证的教程,我希望获得有关为什么此函数始终返回 if 条件的帮助。

<html>
<head>
</head>
<body>
     <form id="form" action="#" method="post">
        <fieldset>
            <p>
                First Name:
                <input type="text" id="txt" />
            </p>
            <p> <input type="submit" value="submit" onclick="validate()" /> </p>
        </fieldset>
    </form>
    <script type="text/javascript"> 
        function validate() 
            {
            var userName = document.getElementById("txt").value;
            if (userName.length == 0)
                {
                alert("FINISH THAT UP");
                return false;
                } 
            else 
                {
                alert("thanks, " + UserName);
                }
            }
    </script>
</body>

最佳答案

当文本框不为空时,它确实到达了 else 部分,但随后它因错误而崩溃,因此表单正在静默提交。

JavaScript 区分大小写 - UserNameuserName 不同,因此未定义。

更改为:

alert("thanks, " + userName);

为了避免此类问题,您可以使用 try..catch 包装整个 block ,如下所示:

function validate() 
{
    try
    {
        var userName = document.getElementById("txt").value;
        if (userName.length == 0)
        {
            alert("FINISH THAT UP");
            return false;
        } 
        else 
        {
            alert("thanks, " + UserName);
        }
    } catch (err) {
        alert("general error while validating: " + err.message);
        return false;
    }
}

完成此操作后,您将看到“用户名未定义”。

Live test case .

此外,附注 - 使用您当前的代码,即使值为空,表单仍将被提交,尽管您返回 false - 这是因为您甚至需要取消提交:

<input type="submit" value="submit" onclick="return validate()" />

您忘记了 onclick 本身中的 return 关键字。

关于javascript if-else循环没有到达else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11280297/

相关文章:

jquery - 使用 JSON 时 jQuery 中 if 语句的说明

JavaScript - 将动态键中的键/值数据获取到动态键中

javascript - 谷歌翻译中 div 的点击或鼠标弹起事件

javascript - 'returning a promise' 生成的 promise 中 'resolving with promise' 和 `new` 之间的不同行为

vba - 如何在 Excel VBA 中使用 OR 和空单元格创建 IF 语句

c++ - if 语句不起作用并被跳到 else 部分

c# - 减少 if 语句中的条件

javascript - Vue.JS。通过路由器传递 prop

javascript - underscore.js 如何使用 this._wrapped

r - 更改条件以替换向量中的元素