>我有一个简单的开关案例,它将获取该人的电子邮件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>