JS | do-while - guess数字|输出错误

时间:2017-10-09 18:07:47

标签: javascript alert do-while prompt

我对do-while有疑问。当我输入一个不同于15的数字的输入形式时,它仍然表示“成功”,但它不应该,因为正确的数字是15.如果我输入其他数字而不是15,我怎么能改变do-while来识别?感谢您的任何建议。

//works when type only 15
do {
    var guess = prompt("Guess a number between 1 and 20");
} while (guess !=15)

alert("Success!");

//this part works when I type 15 or different number
function guessWage() {
do {
    var guess = document.getElementById("guessNumber")
    if (guess.value != 15) {
        guess.value = false;
    }
} while (guess.value === 15)
    alert('you guessed the number');
}
<!DOCTYPE html>
<html>
    <head>
        
        <meta charset="utf-8">
        <title>Issue App</title>
        <link rel="stylesheet" type="text/css" href="wageup.css">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        
    </head>
    <body>
    <div class="container">
       <h2>While loop</h2>
        
        <h5><span class="badge badge-secondary">Array backwards:</span></h5>
        <div class="alert alert-success" role="alert" id="resultMonthly">
        </div>
        <h5><span class="badge badge-secondary">Array forwards:</span></h5>
        <div class="alert alert-info" role="alert" id="resultDaily">
        </div>
        
        <h5><span class="badge badge-secondary">Guess, how much full-stack dev earns</span></h5>
        <div class="input-group">
          <span class="input-group-addon" id="basic-addon1">$</span>
          <input type="text" class="form-control" placeholder="Type the number" aria-label="Number" aria-describedby="basic-addon1" id="guessNumber">
        </div>
               
        <button onclick="guessWage()" type="button" class="btn btn-info">Guess it!</button>
        
        
    </div>

        
        
                
        <!-- Scripts -->
                
        <!-- Jquery -->
        <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
        <!-- Bootstrap -->
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
        <!-- JS -->
        <script type="text/javascript" src="whileloop.js"></script>
        
    </body>
</html>

好的,我用Number(var)将字符串更改为Number,但现在它给了我一个无限循环。我有点困惑。有人知道在这个做什么时加入什么?

function guessWage() {
do {
    var guess = document.getElementById("guessNumber")
    
} while (Number(guess.value) !== 15)
    alert('you guessed the number');
}
<!DOCTYPE html>
<html>
    <head>
        
        <meta charset="utf-8">
        <title>Issue App</title>
        <link rel="stylesheet" type="text/css" href="wageup.css">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        
    </head>
    <body>
    <div class="container">
       <h2>While loop</h2>
        
        <h5><span class="badge badge-secondary">Array backwards:</span></h5>
        <div class="alert alert-success" role="alert" id="resultMonthly">
        </div>
        <h5><span class="badge badge-secondary">Array forwards:</span></h5>
        <div class="alert alert-info" role="alert" id="resultDaily">
        </div>
        
        <h5><span class="badge badge-secondary">Guess, how much full-stack dev earns</span></h5>
        <div class="input-group">
          <span class="input-group-addon" id="basic-addon1">$</span>
          <input type="text" class="form-control" placeholder="Type the number" aria-label="Number" aria-describedby="basic-addon1" id="guessNumber">
        </div>
               
        <button onclick="guessWage()" type="button" class="btn btn-info">Guess it!</button>
        
        
    </div>

        
        
                
        <!-- Scripts -->
                
        <!-- Jquery -->
        <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
        <!-- Bootstrap -->
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
        <!-- JS -->
        <script type="text/javascript" src="whileloop.js"></script>
        
    </body>
</html>

2 个答案:

答案 0 :(得分:0)

Javascript使用== !=,但您应始终使用===!==

由于前者有时会产生不可预测的结果。而且,您将字符串与整数进行比较。尝试使用Number(var)

预先转换它们

答案 1 :(得分:0)

基本上你想要实现的目标并不清楚..如果你只是想比较点击按钮上的值,你就不需要在这种情况下使用循环。所以像...

function guessWage() {
    var guess = document.getElementById("guessNumber")
    if (guess.value != "15") {
        // do what you want here if guess is wrong.
        alert('wrong guess');
    }
    else
    {
        // do what you want if guess is right
        alert('right guess');
    }    
}

OR

function guessWage()
{
    var guess = document.getElementById("guessNumber")
     if (Number(guess.value) != 15) {
        // do what you want here if guess is wrong.
        alert('wrong guess');
        }
    else
    {
       // do what you want if guess is right
       alert('right guess');
    }
}

随时评论是否有任何内容我会更新我的答案。