Javascript 岩石、造纸厂正在工作,但没有按计划进行

Javascript 岩石、造纸厂正在工作,但没有按计划进行,javascript,Javascript,我为一个简单的石头、布和剪刀游戏编写了以下代码。 它可以工作,但会产生意想不到的结果,我不知道为什么 html: 您只是没有使用myPick的真实值,因为您编写了: var myPick = document.getElementById('mypick'); 它获取元素,而不是其值。你应该写: var myPick = document.getElementById('mypick').value; 所以它确实有效 现在您可以大大减少代码(同时提高可靠性和可读性) 编辑:我的最佳解决方案

我为一个简单的石头、布和剪刀游戏编写了以下代码。 它可以工作,但会产生意想不到的结果,我不知道为什么

html:

您只是没有使用
myPick
的真实值,因为您编写了:

var myPick = document.getElementById('mypick');
它获取元素,而不是其值。你应该写:

var myPick = document.getElementById('mypick').value;
所以它确实有效

现在您可以大大减少代码(同时提高可靠性和可读性)

编辑:我的最佳解决方案

在发布了我的第一个答案(仍在下面可见)后,我阅读了@imsiso的一个答案,这让我想到了一个更简单的解决方案

它的一些改进在我的第一个答案中有明确的详细说明,其他改进来自@imsiso使用
而不是
的想法,我在其中添加了以下更改:

  • 单击时直接执行(无更多按钮)
  • 无需检查错误选择或无选择(仅可能有3个有效选择)
  • 在JS中不需要“武器”列表(使用选项的innerHTML)
  • 用结果填充一个
    来替换
    alert()
    ,这样所有的游戏只需点击一下
这是:

choice.onclick=function(){
var wins=[0.2,1.0,2.1],
computerPick=Math.floor(Math.random()*3),
myPick=+choice.value;
result.innerHTML=myPick==computerPick?
“同样,再试一次!”:
“你+
(wins.indexOf(myPick+computerPick/10)=-1?'lose':'win')+
“!计算机有”+选项[computerPick]。innerHTML+!”;
};

岩石
纸张
剪刀

这是我的代码,我认为应该可以使用。你的错误

如果使用“提交”,则单击时浏览器将刷新

而且也不需要添加表单标签,因为并没有任何请求发送到服务器

document.getElementById('mypick')
将文本框作为对象返回。因此,要获取对象的值,应该使用
document.getElementById('mypick').value

如果用户键入“bla-bla”或“Paper”而不是“Paper”,该怎么办?然后它们将被算作“岩石”

还有一些其他的东西,比如使用额外的“;”或者使用var来定义要在函数中使用的变量等等

<HTML>
<head>
<title> best browser game and ever</title>
<script>
function result(){
  var computerPick = Math.floor(Math.random() * 3);
  console.log(computerPick);
  var strs=["Rock","Paper","Scissors"];

  var myPick = document.getElementById('mypick').value;
  if (myPick==-1){
    alert('chooooose!');
  }else{
    var tmp = myPick - computerPick;
    if (top==0){
      alert("The same, try again!");
    }elseif(top==1 || top==-2){
      alert('You Won! Computer choosed:'+strs[computerPick]);
    }elseif(top==-1 || top==2){
      alert('You Lost! Computer choosed:'+strs[computerPick]);
    }else{alert('something is wrong with universe');}
  }
}
</script>
</head>
<body>
<p>If you win this, all hour dreams will come true.</p>
<select Id="mypick">
<option value="-1">choose</option>
<option value="0">R</option>
<option value="1">P</option>
<option value="2">S</option>
</select>
<input Id="kill" type="button" value="kill" onclick="result" />
</body>
</HTML>

有史以来最好的浏览器游戏
函数结果(){
var computerPick=Math.floor(Math.random()*3);
控制台日志(computerPick);
var-strs=[“石头”、“布”、“剪刀”];
var myPick=document.getElementById('myPick').value;
如果(myPick==-1){
警惕('choooose!');
}否则{
var tmp=myPick-computerPick;
如果(顶部==0){
警报(“相同,再试一次!”);
}elseif(top==1 | | top==2){
警报('您赢了!选择了计算机:'+strs[computerPick]);
}elseif(顶部==-1 | |顶部==2){
警报('您丢失了!选择了计算机:'+strs[computerPick]);
}否则{alert('宇宙出了问题');}
}
}
如果你赢了,所有的梦想都会成真

选择 R P s
也许您遗漏了潜在的Lizzard和Spock变量?开玩笑。欢迎来到苏,嘿。首先尝试将提交按钮类型替换为按钮按钮类型
,它可以工作,但会产生非常意外的结果
——因此,换句话说,它不起作用。您能否详细说明这些意外结果是什么,或者您是否希望人们运行您的代码并自己检查结果?@imsiso-或者,如果您甚至不想提交所需的表单,请删除表单元素
var myPick=document.getElementById('myPick').value-注意您没有的
.value
部分。(我没有将此作为答案发布,因为我不明白为什么您会说您当前的代码“有效”-不确定是否还有我遗漏的内容。)我喜欢您的算法。但你确定你的代码有效吗?因为提交btn将刷新浏览器。在我发现您的代码正常工作后,我将给出+1。(:@imsiso肯定能用(你可以查看代码段)。我必须承认我没有注意(没用)是否存在
及其
。但这并不重要,因为所有的工作都在提交之前完成,因此它对用户保持透明。另一方面,您的解决方案让我想到像您一样使用
:您可以查看我编辑的答案,其中包括这一改进。因此我支持您的解决方案,谢谢!好的。谢谢。谢谢你的时间和金钱。还有你的风格,包括我的名字在你的答案中。+1
var myPick = document.getElementById('mypick').value;
<HTML>
<head>
<title> best browser game and ever</title>
<script>
function result(){
  var computerPick = Math.floor(Math.random() * 3);
  console.log(computerPick);
  var strs=["Rock","Paper","Scissors"];

  var myPick = document.getElementById('mypick').value;
  if (myPick==-1){
    alert('chooooose!');
  }else{
    var tmp = myPick - computerPick;
    if (top==0){
      alert("The same, try again!");
    }elseif(top==1 || top==-2){
      alert('You Won! Computer choosed:'+strs[computerPick]);
    }elseif(top==-1 || top==2){
      alert('You Lost! Computer choosed:'+strs[computerPick]);
    }else{alert('something is wrong with universe');}
  }
}
</script>
</head>
<body>
<p>If you win this, all hour dreams will come true.</p>
<select Id="mypick">
<option value="-1">choose</option>
<option value="0">R</option>
<option value="1">P</option>
<option value="2">S</option>
</select>
<input Id="kill" type="button" value="kill" onclick="result" />
</body>
</HTML>