JS确实在控制台中工作,但没有在onclick上工作

时间:2016-06-19 09:26:46

标签: javascript jquery html

我是webdevelopment的新手,并尝试过登录功能(单独使用html,css和js),但它还没有工作:/

<li>
    <a id="myLink" href="#" onclick="MyFunction();">
        <i class="fa fa-user-plus" aria-hidden="true"></i>
        &nbsp;Register
    </a>
    <script>
        function MyFunction() {
            var username = prompt("Please choose a username");
            var password = prompt("Please choose a password");
        }
    </script>
</li>
<li>
    <a id="myPw" href="#" onclick="MyPassword();">
        <i class="fa fa-unlock" aria-hidden="true"></i>
        &nbsp;Login
    </a>
    <script>
        function MyPassword() {
            var verifyuser = prompt("Please enter your username")
            var verifypw = prompt("Please enter your password")
            if (verifyuser === username && verifypw === password) {
                alert("You have been logged in!")
            }
        }
    </script>

所以基本上当我点击&#34;注册&#34;正在提示访问者选择用户名和密码,然后他可以用来登录,如果他点击&#34;登录&#34; 但是,如果我在注册并输入&#34;用户名&#34;后进入java控制台。只是看看var&#34;用户名&#34;记得我得到了 Uncaught ReferenceError: username is not defined(…)

然而,当我没有点击&#34;注册&#34;只需在js控制台中手动输入js代码即可。所以我在控制台中键入它(每行一行):

var username = prompt("Please choose a username");  //now I enter a username
var password = prompt("Please choose a password");  //now I enter a pw
username (now it displays what I just entered when I was prompted for username)
password (now it displays what I just entered for password)

关于问题是什么的任何想法?

1 个答案:

答案 0 :(得分:2)

Javascript变量的范围限定在他们声明的函数中。因此var passwordvar username写在MyFunction内,这是唯一的地方在哪里可以访问它们。

您要做的是在全局范围内声明这些变量。要做到这一点,你可以用这样的东西替换你的第一个脚本:

<script>
    var username;
    var password;

    function MyFunction() {
        username = prompt("Please choose a username");
        password = prompt("Please choose a password");
    }
</script>