看起来像一个容易解决的问题。无法弄清楚为什么代码会返回密码,尽管输入空格或太多/太少的字符。需要一点帮助。感谢名单!
function secretWord() {
var text = "You entered";
var output = "Thank you, Po's secret word was validated";
<!--variable to hold secret word-->
var user_prompt = prompt("Enter Allen's secret word. It must contain exactly 7 characters and there can be no empty spaces", "");
do {
if(user_prompt.length == 6 && user_prompt.indexOf('') >= 0) {
document.getElementById("guess").innerHTML= text + "<br>" + user_prompt + "<br>" + output;
}
else if(user.prompt.length < 6) {
window.alert("secret word is too short");
var user_prompt;
document.getElementById("guess").innerHTML= text + "<br>" + user_prompt + "<br>" + output;
}
else if(user.prompt.length > 6) {
window.alert("secret word is too long")
var user_prompt;
document.getElementById("guess").innerHTML= text + "<br>" + user_prompt + "<br>" + output;
}
else if(user_prompt.indexOf('') >= 0) {
window.alert("secret word cannot contain spaces");
var user_prompt;
document.getElementById("guess").innerHTML= text + "<br>" + user_prompt + "<br>" + output;
}
}
while(user_prompt != -999);
}
答案 0 :(得分:4)
除了你有的拼写错误(user_prompt != user.prompt
)之外,你还在寻找一个没有空格的7个字符的字符串。
这种情况检查:
if(user_prompt.length == 6 && user_prompt.indexOf('') >= 0) {
是一个包含任意字符的6个字符的字符串。
您需要的是:
if(user_prompt.length == 7 && user_prompt.indexOf(' ') == -1) {
如果字符串长度为7且没有空格,则为true。
这是一个有效的示例,我已经对其进行了简化,因此在此处使用代码段更容易处理,但您可以查看并重复使用这些条件:
function secretWord() {
var text = "You entered";
var output = "Thank you, Po's secret word was validated";
var user_prompt = prompt("Enter Allen's secret word. It must contain exactly 7 characters and there can be no empty spaces", "");
document.getElementById("guess").innerHTML = '';
if (user_prompt.length == 7 && user_prompt.indexOf(' ') == -1) {
document.getElementById("guess").innerHTML = text + "<br>" + user_prompt + "<br>" + output;
} else if (user_prompt.length < 7) {
document.getElementById("guess").innerHTML = "secret word is too short";
} else if (user_prompt.length > 7) {
document.getElementById("guess").innerHTML = "secret word is too long";
} else if (user_prompt.indexOf(' ') >= 0) {
document.getElementById("guess").innerHTML = "secret word cannot contain spaces";
}
}
&#13;
<div id="guess"></div>
<button onclick="secretWord()">Run</button>
&#13;
答案 1 :(得分:2)
else if(user.prompt.length < 6) {
// ...
else if(user.prompt.length > 6) {
在这两种情况下,user.prompt.length
应为user_prompt.length
答案 2 :(得分:2)
你的问题在于if语句
应该是user_prompt
而不是user.prompt
此外,即使您输入空格但是正确数量的字符说6左右,它将通过第一个if测试。
你没有检查空间,' '
但是''
。看你正确检查空间。