Javascript 从另一个函数调用具有对象参数的函数

Javascript 从另一个函数调用具有对象参数的函数,javascript,Javascript,我的目标非常简单:我想截取右键和左键,并相应地执行特定的JavaScript。特别是,我的HTML中有两个img元素,基本上是一个左箭头和一个右箭头,用于更改中心图片: <img id="goleft" onclick="changePic(this)" src="x"/> <img id="goright" onclick="changePic(this)" src="y" /> 在这里之前一切都很好。单击事件时,Javascript被正确调用。但是,现在我正在实现一

我的目标非常简单:我想截取右键和左键,并相应地执行特定的JavaScript。特别是,我的HTML中有两个img元素,基本上是一个左箭头和一个右箭头,用于更改中心图片:

<img id="goleft" onclick="changePic(this)" src="x"/>
<img id="goright" onclick="changePic(this)" src="y" />
在这里之前一切都很好。单击事件时,Javascript被正确调用。但是,现在我正在实现一个系统来捕获右键和左键,并执行相同的操作。以下功能将捕获任何按键事件:

document.onkeydown = function (evt) {
    evt = evt || window.event;
    switch (evt.keyCode) {
        case 37:
            leftArrowPressed();
            break;
        case 39:
            rightArrowPressed();
            break;
    }
};
…很明显,我认为“leftArrow”和“rightArrow”这两个函数可以简单地实现这一点:

function leftArrowPressed() {
    changePic(document.getElementById("goLeft"));
}

function rightArrowPressed() {
    changePic(document.getElementById("goRight"));
}
然而,这是行不通的。正确调用了函数
leftarrowspressed
rightarrowspressed
,但调用了函数
changePic
(因为我看到弹出警报“hello world”,但调用“obj.id”时失败)。所以我相信这个问题与我将对象从调用者传递到侦听器函数的方式有关:谁能告诉我我做错了什么


另外,我是这门语言的新手,所以请不要犹豫,告诉我任何我认为与回答问题无关但实际上不相关的东西

id区分大小写,您的id是
goleft
,但您尝试使用
goleft
id区分大小写,您的id是
goleft
,但您尝试使用
goleft

查找,我建议对您的代码进行一个小的更改,这可能会让您的生活更轻松:

<img id="goleft" onclick="leftArrowPressed()" src="x"/>
<img id="goright" onclick="rightArrowPressed()" src="x"/>

changePic()
函数更改为使用字符串而不是元素,这将使事情变得更简单


如果您想坚持当前的实现:在查找中使用
goLeft
,它应该是
goLeft
。区分大小写

我将建议对您的代码进行一个小的更改,这可能会让您的生活更轻松:

<img id="goleft" onclick="leftArrowPressed()" src="x"/>
<img id="goright" onclick="rightArrowPressed()" src="x"/>

changePic()
函数更改为使用字符串而不是元素,这将使事情变得更简单


如果您想坚持当前的实现:在查找中使用
goLeft
,它应该是
goLeft
。区分大小写

一个非常非常愚蠢的错误。谢谢你的回答,我会接受你的回答一次,所以请允许我(10分钟内)!一个非常非常愚蠢的错误。谢谢你的回答,我会接受你的回答一次,所以请允许我(10分钟内)!不幸的是,我更容易坚持使用当前的实现(因为这是实际代码的简化版本),但无论如何还是要感谢您的提示!不幸的是,我更容易坚持使用当前的实现(因为这是实际代码的简化版本),但无论如何还是要感谢您的提示!仅供参考,我投票决定结束我自己的问题,因为这不是一个将来对任何其他用户都有帮助的内容(实际上只是一个打字错误),但我不会删除它,因为其他人已经通过给出答案获得了声誉。请告诉我这是否是正确的方式。仅供参考,我已经投票结束了我自己的问题,因为这不是一个将来会帮助任何其他用户的内容(实际上只是一个打字错误),但我不会删除它,因为其他人已经通过给出答案获得了声誉。如果这不是正确的方法,请告诉我。