相等的变量不返回为相等



尽管两组(userTry 和 username & passTry and pass(相等,但代码在处理两者相等情况的登录函数中不返回任何发生任何内容。该页面不是应该向用户介绍的内容,而是不返回任何内容,我很好奇为什么没有迹象表明这两个变量相等

<!DOCTYPE html>
<html>
<body>
<p>Create an Account:</p>
<button onclick="create()">Sign Up</button>
<button onclick="login()">Login</button>
<button onclick="doc()">Make a Document</button>
<p id="username"></p>
<p id="pass"></p>
<p id="login"></p>
<p id="welcome"></p>
<p id="name"></p>
<p id="title"></p>
<p id="text"></p>
<script>
function create() {
    var name = prompt("Enter Your Name:", "Name");
    var username = prompt("Please enter a Username:", "username");
    var pass = prompt("Please enter a Password:", "password");
    if (username != null) {
      if (pass != null) {
        document.getElementById("name").innerHTML =
        "You have signed up successfully!";
      }
    }
}
function login() {
  var userTry=prompt("Enter Your Username", "Username");
  var passTry=prompt("Enter Your Password", "Password");
  if (userTry==username && passTry==pass) {
    document.getElementById("name").innerHTML =
    "Welcome! Current User: " + name;
  }
}
</script>
</body>
</html>

login函数的作用域中,不声明变量usernamepass。这应该会给你一个引用错误。

由于您已经在函数create()中定义了变量usernamepass,因此它们的作用域在函数结束后结束。因此,要全局使用它们,您需要全局声明它们。

<!DOCTYPE html>
<html>
<body>
<p>Create an Account:</p>
<button onclick="create()">Sign Up</button>
<button onclick="login()">Login</button>
<button onclick="doc()">Make a Document</button>
<p id="username"></p>
<p id="pass"></p>
<p id="login"></p>
<p id="welcome"></p>
<p id="name"></p>
<p id="title"></p>
<p id="text"></p>
<script>
var name;
var username;
var pass;
function create() {
    name = prompt("Enter Your Name:", "Name");
    username = prompt("Please enter a Username:", "username");
    pass = prompt("Please enter a Password:", "password");
    if (username != null) {
      if (pass != null) {
        document.getElementById("name").innerHTML =
        "You have signed up successfully!";
      }
    }
}
function login() {
  var userTry=prompt("Enter Your Username", "Username");
  var passTry=prompt("Enter Your Password", "Password");
  if (userTry==username && passTry==pass) {
    document.getElementById("name").innerHTML =
    "Welcome! Current User: " + name;
  }
}
</script>
</body>
</html>

就像其他人说的那样,变量超出了范围,因此您可能会遇到看不见的JS错误。 在弄乱JS/Jquery时,使用开发人员工具通常是一个好主意。 Chrome 和 Firefox 都已经内置了开发者工具:

如果您使用的是 Chrome:>开发人员工具>更多工具

的选项

如果您使用的是 Firefox:> Web 开发人员>开发人员工具栏

的选项

如果打开这些内容,然后转到页面,则应在控制台窗口中看到错误。 此外,在进行 JS 更改时,您可能需要定期删除缓存以摆脱较旧的 JS 版本。

最新更新