我有一个简单的开关案例,它将获取此人的电子邮件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");
}
正在html页面中单击按钮设置 uname
。
函数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
。目前一切都在当地完成。
答案 0 :(得分:1)
我在这里工作得很好....问题可能在你的内部函数中。问题也可能是由于值中的空格所以..使用trim()
函数。在这里查看更多http://www.w3schools.com/jsref/jsref_trim_string.asp < / p>
<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>