Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Don';我不知道为什么我会收到警报';未定义';消息_Javascript - Fatal编程技术网

Javascript Don';我不知道为什么我会收到警报';未定义';消息

Javascript Don';我不知道为什么我会收到警报';未定义';消息,javascript,Javascript,我正在学习PHP,JavaScript。下面的代码来自我正在使用的一本教科书 <script> function validate(form) { fail = validateForename(form.forename.value) fail += validateSurname(form.surname.value) fail += validateUsername(form.username.value) fail += valida

我正在学习PHP,JavaScript。下面的代码来自我正在使用的一本教科书

<script>
function validate(form)
    {
    fail  = validateForename(form.forename.value)
    fail += validateSurname(form.surname.value)
    fail += validateUsername(form.username.value)
    fail += validatePassword(form.password.value)
    fail += validateAge(form.age.value)
    fail += validateEmail(form.email.value)

    if   (fail == "") return true
    else { alert(fail); return false } 
    }
<body>

<table border="0" cellpadding="2" cellspacing="5" bgcolor="#eeeeee">
    <th colspan="2" align="center">Signup Form</th>
    <form method="post" action="adduser387.php" onSubmit="return      validate(this)">
<tr><td>Forename</td> ....

函数验证(表单)
{
fail=validateForename(form.forename.value)
fail+=validateSurname(form.namite.value)
fail+=validateUsername(form.username.value)
fail+=validatePassword(form.password.value)
fail+=validateAge(form.age.value)
fail+=validateEmail(form.email.value)
如果(fail==“”)返回true
else{alert(fail);return false}
}
报名表
名字。。。。

验证函数可以工作。当所有字段都被验证并且我“提交”时,逻辑会变成“else{alert(fail);return false}”,给我一条“undefined”消息——不知道为什么。如果我提供的信息不足,请告诉我。我在网上找不到答案。谢谢

您的
js
函数必须如下所示:

function validate(form) {
        var fail = '';
        fail += validateForename(form.forename.value);
        fail += validateSurname(form.surname.value);
        fail += validateUsername(form.username.value);
        fail += validatePassword(form.password.value);
        fail += validateAge(form.age.value);
        fail += validateEmail(form.email.value);

        if (fail == "") {
            return true;
        }
        else {
            alert(fail);
            return false
        }
    }
脚本的问题是,
fail
未在任何地方定义,因此其值为
undefined
(不考虑已存档的验证函数返回值),因此如果
fail==”,则为值
永远不会是
真的
,因为
未定义的
不等于
'
,这就是您的else条件得到满足的原因。由于
fail
中存在
undefined
值,您将收到
undefined


请正确设置代码格式在函数开始时定义
fail=''
,因为
alert(undefined='')
将返回
false
其他函数是如何定义的?它们可以返回哪些可能的值以分配或添加到
fail
?它们是否在所有情况下都返回一个值?最有可能的情况是,您的验证函数之一返回了未定义的值,我通过注释掉代码的“警报”部分进行了欺骗,它工作正常。然而,这不是一个解决办法。明天我会试试你的建议。现在是凌晨1点45分。感谢所有帮助过我的人。约翰德