Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-子函数中的布尔全局变量未更改_Javascript_Boolean - Fatal编程技术网

Javascript-子函数中的布尔全局变量未更改

Javascript-子函数中的布尔全局变量未更改,javascript,boolean,Javascript,Boolean,我正在做一个学生项目:一个“热或冷”的游戏应用程序,但似乎不懂什么 下面是该项目的链接:用户应该在文本框中输入数字,尝试猜测随机生成的数字。当他猜的时候,游戏结束了。 问题是,当有正确的猜测时,我设置的注册猜测的标志不会永久注册更改(由正确的猜测引起),用户可以继续猜测 当用户做出正确猜测时,我会更改全局变量winflag的值,但由于某些原因,它会返回false(即还没有猜测)并继续游戏 有人能指出为什么会发生这种情况吗? //INSIDE DOCUMENT.READY //global

我正在做一个学生项目:一个“热或冷”的游戏应用程序,但似乎不懂什么

  • 下面是该项目的链接:用户应该在文本框中输入数字,尝试猜测随机生成的数字。当他猜的时候,游戏结束了。
  • 问题是,当有正确的猜测时,我设置的注册猜测的标志不会永久注册更改(由正确的猜测引起),用户可以继续猜测

    当用户做出正确猜测时,我会更改全局变量winflag的值,但由于某些原因,它会返回false(即还没有猜测)并继续游戏

    有人能指出为什么会发生这种情况吗?

    //INSIDE DOCUMENT.READY
    
    //global variable declaration
    var winflag=false;
    
    //event handler for click on guess button
    $('#guessButton').click(function(){
        event.preventDefault();
        if(!winflag) {
            console.log("calling guessfunction")
            guessfunction();
        }
        else {
            alert("Game is over");
        }
    });
    //END OF DOCUMENT READY
    
    var guessfunction = function () {
    //guesscount++ -- write guesscount in #count
    guesscount++;
    console.log("guesscount is " + guesscount);
    //current guess cguess=get the input from the text box 
    var tcguess = $('#userGuess').val();
    var cguess = +tcguess;
    //if cguess>100 - alert "not valid input"
    if (cguess>100) {
        return alert("Not a valid input");
    }
    else {
        //append cguess in #guessList
        $('#guessList').append('<li>'+tcguess+'</li>');
        //calculatefeedback(solution,cguess)
        calculatefeedback(solution,cguess);
        console.log("calculated feedback");
    }}
    
    var calculatefeedback = function(sol,guess) {
    //difference=absolute value(solution-guess)
    var difference = Math.abs(solution-guess);
    //if difference=>70 --- return you're freezing
    if (difference >= 70) {
        winflag=false;
        return alert("You're freezing!");
    }
    //else if difference=>30 --- return youre cold
    else if (difference >= 30) {
        winflag=false;
        return alert("You're cold!");
    }
    //else if difference=>15 --- return youre warm
    else if (difference >= 15) {
        winflag=false;
        return alert("You're warm!");
    }
    //else if difference=>5 --- return hot
    else if (difference >= 5) {
        winflag=false;
        return alert("You're hot!");
    }
    //else if difference>=1 --- return burning
    else if (difference >= 1) {
        winflag=false;
        return alert("You're burning!");
    }
    //else if difference=0 --- return GUESSED
    else if (difference == 0) {
        winflag=true;
        return alert("You guessed!");
    }
    //else alert "not valid input"
    else  {
        return alert("Not a valid input");
    }
    //end game
    }
    
    //内部DOCUMENT.READY
    //全局变量声明
    var-winflag=false;
    //单击猜测按钮的事件处理程序
    $(“#猜测按钮”)。单击(函数(){
    event.preventDefault();
    如果(!winflag){
    log(“调用猜测函数”)
    猜测函数();
    }
    否则{
    警惕(“游戏结束”);
    }
    });
    //文件结束准备好了吗
    var guessfunction=函数(){
    //guesscount++--在#count中写入guesscount
    猜数++;
    log(“猜测计数为”+猜测计数);
    //当前猜测cguess=从文本框中获取输入
    var tcguess=$('#userGuess').val();
    var cguess=+tcguess;
    //如果cguess>100-警告“输入无效”
    如果(cguess>100){
    返回警报(“非有效输入”);
    }
    否则{
    //在#猜测列表中追加cguess
    $(“#猜测列表”).append(“
  • ”+tcguess+”
  • ); //计算反馈(解决方案,cguess) 计算反馈(解决方案,cguess); 控制台日志(“计算反馈”); }} var calculatefeedback=函数(sol,guess){ //差值=绝对值(溶液猜测) var差=数学abs(解决方案猜测); //如果差异=>70---返回您已冻结 如果(差值>=70){ winflag=false; 返回警报(“你冻僵了!”); } //如果差值大于30,则返回“你冷了” 否则如果(差异>=30){ winflag=false; 返回警报(“你冷了!”); } //否则,如果差值大于15,则返回“你很温暖” 否则如果(差异>=15){ winflag=false; 返回警报(“你热了!”); } //如果差值大于5,则返回热态 否则如果(差异>=5){ winflag=false; 返回警报(“你很热!”); } //如果差值>=1,则返回燃烧 否则如果(差异>=1){ winflag=false; 返回警报(“你在燃烧!”); } //如果差=0,则返回else——猜测返回 else if(差=0){ winflag=true; 返回警报(“你猜对了!”); } //else警报“输入无效” 否则{ 返回警报(“非有效输入”); } //终局 }
    如果您正在设置
    var winflag=false
    $(document).ready(function(){})
    中,则不会在全局作用域上设置它。正在文档就绪的范围内设置
    winflag
    。您需要像这样设置它。winflag=false

    如果您在就绪处理程序中声明
    winflag
    ,那么它不是全局的。尝试
    window[“winflag”]=false取而代之。