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

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){
    ,因为如果没有它,某些浏览器可能无法工作。