JavaScript 开关案例不适用于电子邮件 ID 作为值



>我有一个简单的开关案例,它将获取该人的电子邮件ID并测试密码。截至目前,我正在对值进行硬编码。我的问题是,当我使用用户名时,开关大小写工作正常,但是当我尝试使用电子邮件ID进行相同的操作时,它不会调用所需的函数。怎么了?代码如下:

switch(uname){
    case "":if(pass == ""){ alert("Please enter you credentials!!");}
        break;
    case "test@abc.com": if(pass == "test123"){ NavigateToDash(); }
                 else{alert("Wrong Credentials!! Please re-enter!!");}
                 break;
    case "admin@abc.com": if(pass == "admin123"){ NavigateToAdmin(); }
                  else{alert("Wrong Credentials!! Please re-enter!!")}
                  break;
    default: alert("Something is wrong!! contact admin");
}

uname是在 html 页面中的按钮单击上设置的。

调用函数NavigateToDash()。如果我只使用 test 而不是 test@abc.com ,这段代码工作正常。请告诉我我错在哪里。

提前感谢您的帮助。

编辑

添加将uname传递给 switch 语句的函数:

function setValues(){
      uname = document.getElementById('user').value;
      pass = document.getElementById('password').value;
      window.localStorage.setItem('user', uname);
      window.localStorage.setItem('pass', pass);
}

在带有switch的函数中,我首先调用此函数setValues。目前,一切都在本地完成。

我在这里工作得很好....问题可能出在你的内在功能上。问题也可能是由于值中的空格。因此,请使用trim()函数。请参阅此处以获取更多 http://www.w3schools.com/jsref/jsref_trim_string.asp

<script type="text/javascript">
uname = document.getElementById('user').value);
pass = document.getElementById('password').value);
var u = uname.trim();
var p = pass.trim();
test(u,p);
function test(uname,pass){
switch(uname){
    case "":if(pass == ""){ alert("Please enter you credentials!!");}
        break;
    case "test@abc.com": if(pass == "test123"){ hello(); }
                 else{alert("Wrong Credentials!! Please re-enter!!");}
                 break;
    case "admin@abc.com": if(pass == "admin123"){ hello(); }
                  else{alert("Wrong Credentials!! Please re-enter!!")}
                  break;
    default: alert("Something is wrong!! contact admin");
}
}
function hello(){
alert('hello');
}
</script>

最新更新