javascript switch case不使用电子邮件ID作为值

时间:2017-01-02 10:30:02

标签: javascript

我有一个简单的开关案例,它将获取此人的电子邮件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。目前一切都在当地完成。

1 个答案:

答案 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>