我这里有一个提示,允许用户输入他/她的密码。我的问题是我希望它在用户输入不等于密码集时提示。这是我的代码。
var padmin="hello";
function myFunction(){
var x= prompt("Input password for security purposes");
if(x==padmin){
return true;
}else{
return false;
}
}
if(self.myFunction() == true){
alert("password correct!");
}else{
self.myFunction();
}
请帮忙。谢谢。
答案 0 :(得分:0)
您的代码在2个propmts之后退出的原因是因为您使用的是if...else
。要以这种方式循环,您应该使用递归。
此外,x == padmin
将返回布尔值。因此,如果您没有任何处理,只需使用return x === padmin
另请注意,在任何函数之外定义的任何变量都会成为全局范围的一部分,并且在全局范围内出现不良做法。将此变量移动到需要它的函数内。
function acceptPassword() {
var padmin = "hello";
var x = prompt("Input password for security purposes");
return x === padmin;
}
function validate() {
return acceptPassword() || validate();
}
function notify() {
if (validate()) {
alert("password is correct")
}
}
notify();
答案 1 :(得分:0)
在myFunction
中使用简单。在myFunction
中添加if和else语句,他们会提示,直到密码匹配
var padmin = "hello";
function myFunction() {
var x = prompt("Input password for security purposes");
if (x == padmin) {
alert("password correct!");
} else {
myFunction();
}
}
myFunction();
答案 2 :(得分:0)
有多种方法可以做到这一点。
使用无限循环,打破正确的密码。
var isPasswordCorrect = false;
var password = '';
while(!isPasswordCorrect){
password = prompt(' Input password for security purposed ');
isPasswordCorrect = validatePassword(password);
if(isPasswordCorrect)
alert('password correct!');
}
function validatePassword (password){
/*validation logic here, return true if password is correct,
else return false
*/
}
另一种方法是简单地进行递归调用:
function validatePassword(){
var password = password = prompt(' Input password for security purposed ');
var isPasswordCorrect;/*check password and store here*/
if( isPasswordCorrect){
return true;
}else{
return validatePassword();
}
}