javascript开关案例不使用电子邮件id作为值

javascript开关案例不使用电子邮件id作为值,javascript,Javascript,我有一个简单的开关情况下,将采取的人的电子邮件id和测试的密码。现在,我正在硬编码这些值。我的问题是,当我使用用户名时,开关盒工作正常,但当我尝试使用相同的电子邮件id时,它不会调用所需的功能。怎么了?代码如下: switch(uname){ case "":if(pass == ""){ alert("Please enter you credentials!!");} break; case "test@abc.com": if(pass == "test12

我有一个简单的开关情况下,将采取的人的电子邮件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页面中单击按钮进行设置

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

提前感谢你的帮助

编辑

添加将
uname
传递到
开关
语句的函数:

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

在带有
开关的函数中
,我首先调用这个函数
setValues
。目前一切都在本地进行

我在这里工作得很好….问题可能在您的内部函数中。问题也可能是由于值中的空格造成的..所以请使用
trim()
function。有关详细信息,请参阅此处


uname=document.getElementById('user').value);
pass=document.getElementById('password').value);
var u=uname.trim();
var p=pass.trim();
试验(u,p);
功能测试(取消,通过){
开关(uname){
案例“”:如果(pass==“”){alert(“请输入您的凭据!!”);}
打破
案例”test@abc.com“:if(pass==“test123”){hello();}
else{alert(“错误的凭据!!请重新输入!!”);}
打破
案例”admin@abc.com“:if(pass==“admin123”){hello();}
else{alert(“错误的凭据!!请重新输入!!”)
打破
默认值:警报(“出现问题!!联系管理员”);
}
}
函数hello(){
警惕(“你好”);
}

能否显示将
uname
传递到交换机的代码?听起来那里好像出了点问题。而且使用JS登录用户以检查凭据不是一个好主意。这只是用于初始测试的测试代码。我将在稍后阶段使用凭据连接到数据库test@abc.com,这段代码可以正常工作。”那么这就意味着
uname
变量不包含
@abc.com
部分。“请告诉我哪里错了。”您正在测试一个不存在的值。如果没有更多信息,我们无法为您提供帮助,但实际上,这只是使用浏览器中内置的功能齐全的调试器查看发生了什么。当我在
中发出警报或在console.log中记录时,我将通过
@abc.com
获得值。只有在开关的情况下,该值才不被考虑,从而产生了问题。没有这些,大家都在猜测
<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>