为什么当用户输入空格或太多/没有足够的字符时,此函数不会给出window.alert?

时间:2015-03-05 15:59:20

标签: javascript html5

看起来像一个容易解决的问题。无法弄清楚为什么代码会返回密码,尽管输入空格或太多/太少的字符。需要一点帮助。感谢名单!

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);
    }

3 个答案:

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


这是一个有效的示例,我已经对其进行了简化,因此在此处使用代码段更容易处理,但您可以查看并重复使用这些条件:

&#13;
&#13;
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;
&#13;
&#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测试。 你没有检查空间,' '但是''。看你正确检查空间。