Javascript简介-函数、语法、逻辑
我正在尝试建立一个石头,布,剪刀的游戏。这是我的密码:Javascript简介-函数、语法、逻辑,javascript,function,syntax,Javascript,Function,Syntax,我正在尝试建立一个石头,布,剪刀的游戏。这是我的密码: var选项=[“r”、“p”、“s”]; document.onkeyup=函数(){ var userGuess=String.fromCharCode(event.keycode).toLowerCase(); log(userGuess); var computerGuess=options[Math.floor(Math.random()*options.length)]; console.log(computerGuess);
var选项=[“r”、“p”、“s”];
document.onkeyup=函数(){
var userGuess=String.fromCharCode(event.keycode).toLowerCase();
log(userGuess);
var computerGuess=options[Math.floor(Math.random()*options.length)];
console.log(computerGuess);
如果(userGuess==“r”| | userGuess==“p”| | userGuess==“s”){
警告(“选择正确-干得好!”);
}否则{
警告(“请选择r、p或s”);
}
}
您的keyCode上缺少大写字母C
var userGuess=String.fromCharCode(event.keyCode).toLowerCase()
event.keycode
应该是event.keycode
,注意大写字母C。另外,可能最好只使用event.key
,因为它已经是一个字符串了
你在用什么浏览器开发?在大多数情况下,通过按F12键可以访问开发人员工具,在程序运行时,您可以在其中放置断点来访问变量。正如其他人所说,您错过了
keyCode
中的大写字母“C”
但在我看来,您并没有在任何地方定义事件。使用全局事件
对象是个坏主意,而且(谢天谢地)并非所有浏览器都支持。您可能还希望使用event.which
,而不是event.keyCode
,后者并不适用于所有事件
事件处理程序的开头应该更像这样:
document.onkeyup = function(event) {
var userGuess = String.fromCharCode(event.which).toLowerCase();
...
document.onkeyup = function(event) {
console.log("event=", event);
var userGuess = String.fromCharCode(event.which).toLowerCase();
但您也可以使用控制台日志记录来查看发生了什么,如下所示:
document.onkeyup = function(event) {
var userGuess = String.fromCharCode(event.which).toLowerCase();
...
document.onkeyup = function(event) {
console.log("event=", event);
var userGuess = String.fromCharCode(event.which).toLowerCase();
注意,我没有说console.log(“event=“+event”)代码>
+
将导致事件以类似[object object]
的形式输出;使用逗号(以及任何现代浏览器的开发人员控制台,通常可通过F12访问),您将能够浏览对象的内容。两个更改:
传入事件
,使其在本地可用
keyCode
是在intercaps中编写的(而不是您现有的keyCode
),JavaScript区分大小写
好的调试技巧是对您试图检查的对象执行console.dir()
操作,这将显示正确(且可用)的属性和方法名称
(不过,请注意,事件
非常庞大,因此您将有很多内容需要筛选。)
var选项=[“r”、“p”、“s”];
document.onkeyup=函数(事件){
var userGuess=String.fromCharCode(event.keyCode).toLowerCase();
log(userGuess);
var computerGuess=options[Math.floor(Math.random()*options.length)];
console.log(computerGuess);
如果(userGuess==“r”| | userGuess==“p”| | userGuess==“s”){
警告(“选择正确-干得好!”);
}否则{
警告(“请选择r、p或s”);
}
}
您需要将event
作为事件处理程序的参数,它是event.keyCode
而不是event.keyCode
(未定义):
var选项=[“r”、“p”、“s”];
document.onkeyup=函数(事件){
var userGuess=String.fromCharCode(event.keyCode).toLowerCase();
log(userGuess);
var computerGuess=options[Math.floor(Math.random()*options.length)];
console.log(computerGuess);
如果(userGuess==“r”| | userGuess==“p”| | userGuess==“s”){
警告(“选择正确-干得好!”);
}否则{
警告(“请选择r、p或s”);
}
}
只需将事件。keycode
更改为事件。keycode
@Sam:他正在将字符串与字符串进行比较,因此严格的相等不会改变结果。@msinfo:听起来好像这个问题被严重否决了。一位用户给出了-1。谁在乎呢?如果有的话,它会稍微鼓励一个人做更多的事情ghly在提问前进行调试。@msanford谢谢!那么在“提问”页面中,我如何运行代码段而不仅仅是一段代码?你是对的。我只是不想让社区认为我懒惰。相反,我不太想寻求帮助。我只是在完全被难倒的时候,在谷歌、谷歌和谷歌更多的搜索之后才来到这里。再一次,感谢所有人的迅速帮助。@msanford您在这里所说的话是很重要的。我在这个社区相对较新,我可以说,有时您会感觉到人们的自我意识,他们会对我们都犯过的简单问题甚至常见错误视而不见。即使从几英里的距离看,他们几乎接近于侮辱用户用户学习的意图。我总是说我来这里是为了学习。如果我试图解决用户问题,我也会为自己澄清概念并加以改进。我喜欢阅读这里的资深人士的谈话。他在使用全局事件
,尽管它在Firefox中不可用。这让我感到困惑我也不知道该事件会自动添加。感谢该事件。哪个更新,因为我更愿意编写在任何地方都能工作的程序!谢谢,伙计。当然。P.S.仅供参考IE不支持控制台
对象(上次我检查时),请不要将其保留在生产代码中(至少不能没有某种黑客攻击)。:)谢谢!我使用的是Chrome检查控制台;但是,我从未注意到引用的错误。如果你使用Chrome,点击F12,转到源代码,找到包含JS的文件,然后单击左侧的数字以放置断点。仅供参考,我就是这样想出来的。我放置了一个断点,发现事件.keycode
未定义。但是我注意到event.keyCode
已经定义。另外,其他人已经说过这一点,但是您可能希望将事件作为参数添加到函数:document.onkeyup=function(event){
,因为如果没有它,某些浏览器可能无法工作。