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