今日は1トンのバグを解決していますが、この1つのバグはうまくいかない。変数がtrueのときにJavaScriptがDOMステートメントを最後に実行するのはなぜですか?
以下のコードは、非常に単純なログオンページです。この時点で唯一正しいユーザー名は「admin」で、そのユーザーの正しいパスワードは「password」です。ここで
はコードです:その後、ポップアップ表示2つの警告ボックス(成功)および(x)は、ポップ:何らかの理由function loginauth() {
var success = false;
var Xusername = document.getElementById("lsr1u").value;
var Xpassword = document.getElementById("lsr1p").value;
if (Xusername == "admin") {
if (Xpassword == "password") {
success = true;
} else {
document.getElementById("wrong").innerHTML = "The username or password is incorrect."
}
} else {
document.getElementById("wrong").innerHTML = "The username or password is incorrect."
}
if (success) {
if (success) {
document.getElementById("wrong").innerHTML = ("s");
}
// successful login operations here
alert("success");
//document.getElementById("author").innerHTML = "success"; //remove when done
alert("x");
}
}
、コードが実行されるの最後のチャンクが、このキャッチ付きの前に document.getElementByIdは、idが "wrong"の段落のinnerHTMLを "s"に変更します。
このコードには何も問題はありません。 DOMが最初に変更されることを確認するために、if/elseステートメントを二重に入れました。しかし、それはうまくいかなかった。
「このユーザー名またはパスワードが間違っています」というこのページの2つのdocument.getElementByIdsは、(falseの場合はvar successと仮定されているので)完全に正常に機能します。そして、私の成功で/ elseブロックを最後にブロックしても、そのDOMコードを実行することは決してなく、 's'に変更されることはありません。今日は非常に奇妙なことが起こっています。
これはChromeでのみ発生します。 Internet ExplorerとEdgeでは問題なく動作します。
別の 'if(成功)'テストで条件付けされた文ブロックの中に 'if(成功)'テストを置くのはなぜですか? – Pointy
@ Pointy私はそれをテストのようにしました。もともとそれはそうではありませんでした。しかし、そうしても私の問題は解決されませんでした。それがそこにあるかどうかにかかわらずうまくいきません。 – InterLinked
変数は無意味に値をランダムに変更しません。 – Pointy