我的目标很简单:我想拦截右键和左键的按下,并因此执行特定的JavaScript。特别是,我的HTML中有两个img元素,基本上是用于更改中心图片的向左和向右箭头:
<img id="goleft" onclick="changePic(this)" src="x"/>
<img id="goright" onclick="changePic(this)" src="y" />
changePic(this)
因此,该功能正在捕获调用者对象(向左或向右箭头)并相应地更改源。但是,出于采样目的,在这里说它只会在警报中显示对象的ID:
function changePic(obj) {
alert("hello world");
alert(obj.id);
}
一切正常,直到这里。单击事件时,将正确调用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"));
}
但是,这不起作用。函数leftArrowPressed
和rightArrowPressed
被正确调用(经过警报测试),但函数changePic
被调用(因为我弹出警报“ hello world”,但在“ obj.id”调用时失败)。因此,我认为此问题与我将对象从调用方传递给侦听器功能的方式有关:谁能告诉我我做错了什么吗?
附言:我是该语言的新手,所以请不要犹豫地对我说任何我认为与回答问题无关但实际上与我无关的内容。
ID区分大小写,您的ID是,goleft
但您尝试使用进行查找goLeft
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句