0

フォームの入力をチェックするために使用する Javascript ファイルがあります。しかし、コメント行のコメントを外すと、javascript ファイルが正しく機能せず、一部のフィールドが空白であってもフォームが送信されます。実際、Javascript ファイルは 2 番目のアラート機能にも到達しません。何が起こっている?

function checkLogin()
{
    alert("HERE");
    //document.getElementById("errors").style.display = "none";
    var form = document.getElementById("form1");
    var problems = false;
    document.getElementById("errorJS").style.display = "none";
    document.getElementById("errorJS").innerHTML = "";
    alert("test");
    if(form.email.value.length < 1)
    {
        document.getElementById("errorJS").innerHTML += "Please enter your email address. <br />";
        problems = true;
        document.getElementById("errorJS").style.display = "block";
    }
    if(form.pword.value.length < 1)
    {
        document.getElementById("errorJS").innerHTML += "Please enter your password.";
        problems = true;
        document.getElementById("errorJS").style.display = "block";
    }
    alert(!(problems));
    return !(problems);
}

それだけで、行は null を返していました。回答ありがとうございます。

4

2 に答える 2

3

短い: どこか (おそらくアウトコメント行) でエラーをスローし、スクリプトの実行を停止します (警告せず、送信を停止しません)。

このエラーは をdocument.getElementById("errors")返すようで、そのプロパティnullにアクセスしようとするとエラーがスローされます。styleそのケースをキャッチする必要があります:

var errors = document.getElementById("errors");
if (errors)
    errors.style.display = "none";
于 2012-07-11T20:23:51.660 に答える
2

「正しく機能しない」とはどういう意味かを正確に定義しておらず、エラー情報(ブラウザから確実に提供されたものdocument.getElementById("errors"))を提供していませんが、 nullを返していると言えます。これは、IDが。のドキュメントに要素が存在しないことを意味しますerrors

プロパティにアクセスする前に、使用可能なものが返されたかどうかを確認document.getElementById("errors")することは、良い一歩となるでしょう。あなたの文書があなたが想定している通りであることを保証することは別のものになるでしょう。

于 2012-07-11T20:21:44.670 に答える