Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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 - Fatal编程技术网

Javascript 用于确定数字是否较高或较低的函数不起作用

Javascript 用于确定数字是否较高或较低的函数不起作用,javascript,Javascript,除了hilow函数外,我已经让程序的各个方面都正常工作了。 我遇到的问题是让hilow函数对程序执行任何操作。当我运行这些时,我可以让其他方面都正常工作。程序所需的部分位于hilow功能的注释中。谢谢你抽出时间 基本上,每次我按下较高的按钮,较低的数字应该变为计算机猜到的任何数字,这样计算机就可以将我想的数字归零 JS: function getFieldValue(target){ var elm = document.getElementById(target); var v

除了hilow函数外,我已经让程序的各个方面都正常工作了。 我遇到的问题是让hilow函数对程序执行任何操作。当我运行这些时,我可以让其他方面都正常工作。程序所需的部分位于hilow功能的注释中。谢谢你抽出时间

基本上,每次我按下较高的按钮,较低的数字应该变为计算机猜到的任何数字,这样计算机就可以将我想的数字归零

JS:

function getFieldValue(target){
    var elm = document.getElementById(target);
    var val;

    if(val != REMAINING && val >= 0){
            val = parseInt(elm.value);
    }
    else{
        val = elm.value;

    }
    return val;

}
function getCompGuess(){
    var highest = parseInt(document.getElementById("upperBound").value);
    var lower = parseInt(document.getElementById("lowerBound").value);
    var combine = (highest + lower)/2;


    document.getElementById("currentGuess").value = combine;


}


function play(){

    var remaining = getFieldValue("maxGuesses");

    var compGuess = getCompGuess();
    var compElm = document.getElementById("currentGuess");

    compElm.innerHTML = compGuess;
    document.compGuess = compGuess;
    if(remaining > 0){

        remaining -= 1;

}
    else{

        remaining = "Out of guesses";
}
    document.getElementById("REMAINING").value = remaining;

}
function correct(){

    var whatsLeft;
    whatsLeft = document.getElementById("REMAINING").value;
    if(whatsLeft >= 0){
        alert("YOU WON!!!");
    }
    else{
        alert("YOU LOSE");
    }



}

function hilow(userChoice){

    if(userChoice === "HIGHER"){
        //get the field value from the button chosen
        //if the computer guess value in the box is higher that field values 
        //just obtained
        //take the computer guess in the guess box and put it in the lower 
        //value box (use document.getElementById)



        var imLower = parseInt(document.getElementById("lowerBound").value);
        document.getElementById("currentGuess").value = imLower;
    }
    else{

        //get the field value from the upper limit box
        //if the computer guess value in the box is lower than the field         
    //value just obtained

        //take the computer guess in the guess box and put it in the lower             
    //value box (use document.getElementById)



    var imHigher = parseInt(document.getElementById("lowerBound").value);
        document.getElementById("currentGuess").value = imHigher;
    }
        play();

}
还有HTML

<html>
<head>
<meta charset="UTF-8">
<script src="lab1script.js"></script>
</head>
<body>

    Upper Bound: <input type="text" id="upperBound" name="upperBound"  required> 
    <br>
    Lower Bound: <input type="text" id="lowerBound" name="lowerBound"  required> 
    <br>
    Max Guesses: <input type="text" id="maxGuesses" name="maxGuesses" > <br>
    Guesses Left: <input type="text" id="REMAINING" name="REMAINING"> <br>
    Current Guess: <input type="text" id="currentGuess" name="currentGuess"> 
    <br>

            <input type="button" name="Start" value="Start" onclick="play()"><br>
            <br>
                <input type="button" name="HIGHER" value="HIGHER" onclick="hilow()">
                <input type="button" name="LOWER" value="LOWER" onclick="hilow()">
                <input type="button" name="CORRECT" value="CORRECT" onclick="correct()">

</body>
</html>

首先,引号跨越多行,后续行不会作为引号转义。因此,它们被呈现为代码,这会引发语法错误

其次,您实际上没有将userChoice函数参数传递给您的函数。您希望通过onclick=hilowthis.value将button元素的值传递到函数本身

这可以从以下几点看出:

函数getFieldValuetarget{ var elm=document.getElementByIdtarget; var-val; 如果val!=剩余值&&val>=0{ val=parseIntelm.value; }否则{ val=elm.value; } 返回val; } 函数getCompGuess{ var highest=parseIntdocument.getElementByIdupperBound.value; var lower=parseIntdocument.GetElementByIdleLowerBound.value; var组合=最高+较低/2; document.getElementByIdcurrentGuess.value=组合; } 功能扮演{ var剩余=getFieldValuemaxGuesses; var compGuess=getCompGuess; var compElm=document.getElementByIdcurrentGuess; compElm.innerHTML=compGuess; document.compGuess=compGuess; 如果剩余>0{ 剩余-=1; }否则{ 剩余=不可猜测; } document.getElementByIdREMAINING.value=剩余; } 功能正确{ var Whatsleet; whatsLeft=document.getElementByIdREMAINING.value; 如果whatsLeft>=0{ 你赢了!!!; }否则{ 如果你输了; } } 函数hilowuserChoice{ 如果userChoice==更高{ //从所选按钮获取字段值 //如果框中的计算机猜测值高于刚获得的字段值 //将计算机猜测放在猜测框中,并将其放在较小的值框Use document.getElementById中 var imLower=parseIntdocument.getElementByIdlowerBound.value; document.getElementByIdcurrentGuess.value=imLower; }否则{ //从上限框中获取字段值 //如果框中的计算机猜测值低于刚获得的字段值 //将计算机猜测放在猜测框中,并将其放在较小的值框Use document.getElementById中 var imHigher=parseIntdocument.getElementByIdlowerBound.value; document.getElementByIdcurrentGuess.value=imHigher; } 玩 } 上限: 下限: 最大猜测:左侧猜测:当前猜测:
对html进行了修复,以便调用hilow函数并发送名称

事实上,我只是添加了下一行来更改您想要更改的边界

document.getElementById("upperBound").value = document.getElementById("currentGuess").value;
丑陋的线,但这将获得欲望值并将其分配到相应的边界

希望这就是你想要的。如果需要,乐意解释或帮助提供更好的解决方案

函数getFieldValuetarget{ var elm=document.getElementByIdtarget; var-val; 如果val!=剩余值&&val>=0{ val=parseIntelm.value; }否则{ val=elm.value; } 返回val; } 函数getCompGuess{ var highest=parseIntdocument.getElementByIdupperBound.value; var lower=parseIntdocument.GetElementByIdleLowerBound.value; var组合=最高+较低/2; document.getElementByIdcurrentGuess.value=组合; } 功能扮演{ 获得剩余; var compGuess=getCompGuess; var compElm=document.getElementByIdcurrentGuess; compElm.innerHTML=compGuess; document.compGuess=compGuess; } 功能正确{ var Whatsleet; whatsLeft=document.getElementByIdREMAINING.value; 如果whatsLeft>=0{ 你赢了!!!; }否则{ 如果你输了; } } 函数hilowuserChoice{ 如果userChoice==更高{ //从所选按钮获取字段值 //如果框中的计算机猜测值高于字段值 //刚获得 //将计算机猜测放在猜测框中,并将其放在较低的值中 //boxuse document.getElementById; document.getElementByIdlowerBound.value=document.getElementByIdcurrentGuess.value; }否则{ //从上限框中获取字段值 //如果框中的计算机猜测值低于字段值 //刚获得 //将计算机猜测放在猜测框中,并将其放在较低的值中 //boxuse document.getElementById; document.getElementByIdupperBound.value=document.getElementByIdcurrentGuess.value; } 玩 } var first=真; 函数getRe 缅因州{ 如果先{ var max=getFieldValuemaxGuesses; 第一个=假; document.getElementByIdREMAINING.value=max-1; }否则{ var剩余=GetFieldValue剩余; 如果剩余>0{ 剩余-=1; }否则{ 剩余=不可猜测; } document.getElementByIdREMAINING.value=剩余; } } 上限: 下限: 最大猜测:左侧猜测:当前猜测:
在这个问题中,您的注释被视为代码-一般来说,您的缩进是随意的,很难阅读。我编辑了缩进。它们在实际代码中是正确的,但我对这篇文章很懒。道歉!我让你的if在hilow函数上运行。但是我不明白你想要它做什么。Hillow函数应该改变上限或下限数字,这样计算机就可以继续猜测,直到它们达到用户所想的任何数字。当我按下更高或更低的按钮时,这不是第二次猜测。请不要破坏你的帖子。通过在堆栈溢出上发布,您已经为SO授予了不可撤销的权利,以便在下分发该内容。根据SO政策,任何故意破坏行为都将被恢复。您可以使用name,而不是this.value,因为在这种情况下它们是相同的,是的,尽管您希望检查应用程序中的value属性:我很感谢您的回答,并且已经清理了帖子中的代码片段,我保证在我的文本编辑器中,事实上并没有那么恶心!我仍然看不到再次调用play的效果。它不会减少剩下的猜测次数,也不会让电脑再试一次。@Obsidian我最喜欢的一件事,就是找出别人是如何解决问题的。我一直坚持把名字寄出去。我学到了一些新东西。投票结果:@kantor9991-我自己也不知道为什么会在那里调用play,但我所做的只是清理代码;不修改它,但添加in.this.value除外。这已经存在了:这正是我想要的。我现在需要做的就是想办法把剩下的猜测倒计时。我以为我写对了,但不是每次都倒数。我必须使用play函数并找到答案。谢谢你的帮助@kantor9991很高兴它有帮助。希望你能投票或接受,如果它有助于你确定的事情。您知道如何使当前猜测成为代码倒计时的一部分吗?我以为我已经在play中介绍过了,但它似乎不起作用。@kantor9991将剩余变量设置为全局变量。它在每次运行play时都会重置。嗯,我最终这样做了,但没有任何改变。我想我会摆弄它。