0

したがって、私のコードは基本的に、登録の何が問題なのかをユーザーに伝えることです。すべてが機能しますが、1 つのことしかありません。Div はテキスト フィールドを更新して、登録の何が問題なのかを伝える必要がありますが、そうではありません。これが私の JavaScript です。

window.onload = initPage;
submitBtn = document.getElementById("submit");
errorText = document.getElementById("errortext");


function initPage() {
    document.getElementById("password2").onkeyup = checkPassword;
    document.getElementById("password2").onblur = checkPassword;
    document.getElementById("email2").onkeyup = checkEmail;
    document.getElementById("email2").onblur = checkEmail;
    submitBtn.disabled = false;
}

function checkPassword() {
    var password1 = document.getElementById("password1").value;
    var password2 = document.getElementById("password2").value;
    if (password1 != password2) {
        document.getElementById("password1").className = "denied";
        document.getElementById("password2").className = "denied";
        submitBtn.disabled = true;
        document.getElementById("submit").className = "denied";
        errorText.innerHTML = "Passwords do not match.";
    } else {
        document.getElementById("password1").className = "password2";
        document.getElementById("password2").className = "password2";
        document.getElementById("submit").className = "button1";
        submitBtn.disabled = false;
        errorText.innerHTML = "";
    }
}

function checkEmail() {
    var email1 = document.getElementById("email1").value;
    var email2 = document.getElementById("email2").value;
    if (email1 != email2) {
        document.getElementById("email1").className = "denied";
        document.getElementById("email2").className = "denied";
        submitBtn.disabled = true;
        document.getElementById("submit").className = "denied";
        errorText.innerHTML = "Emails Do Not Match.";

    } else {
        document.getElementById("email1").className = "regtext";
        document.getElementById("email2").className =  "regtext";
        submitBtn.getElementById("submit").disabled = true;
        document.getElementById("submit").className = "button1";
        errorText.innerHTML = "";
    }
}

ここに私のdivがあります

<tr><td colspan="2"><div id="errortext"></div></td></tr>
4

2 に答える 2

1

DOMが完全に構築される前に、おそらくそのdivにアクセスしようとしています。そのコードをinitPage関数に入れます。他の関数がそれらにアクセスできるように、その関数のスコープ外の変数が必要になります。グローバル変数の作成を回避するために、これらすべてをクロージャに入れる必要があります。

元:

(function(){    
    var submitBtn;
    var errorText;

    function initPage() {
        submitBtn = document.getElementById("submit");
        errorText = document.getElementById("errortext");
        document.getElementById("password2").onkeyup = checkPassword;
        document.getElementById("password2").onblur = checkPassword;
        document.getElementById("email2").onkeyup = checkEmail;
        document.getElementById("email2").onblur = checkEmail;
        submitBtn.disabled = false;
    }

    // This next line should be under the declaration above
    window.onload = initPage;

    // ...
})();
于 2013-02-01T02:01:45.367 に答える
0

id で要素をフェッチしてから、その内部の html を設定する必要があります。

document.getElementById("errorText").innerHTML = "Emails Do Not Match.";

errorText.innerHTML を直接使用している場合はどこでも同じことを行います。

于 2013-02-01T02:00:42.970 に答える