gpt4 book ai didi

javascript - 从另一个函数调用带有对象参数的函数

转载 作者:行者123 更新时间:2023-11-30 10:09:04 24 4
gpt4 key购买 nike

我的目标非常简单:我想拦截右键和左键的按下,并据此执行特定的 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"));
}

但是,这不起作用。函数 leftArrowPressedrightArrowPressed 被正确调用(通过警报测试)但函数 changePic 被调用(因为我看到警报“hello world “弹出但在调用“obj.id”时失败)。所以我相信这个问题与我将对象从调用者传递给监听器函数的方式有关:有人能告诉我我做错了什么吗?

附言我是这种语言的新手,所以请不要犹豫,给我评论我认为与回答问题无关但实际上无关的任何内容。

最佳答案

ID 区分大小写,您的 ID 是 goleft 但您尝试使用 goLeft 查找它。

关于javascript - 从另一个函数调用带有对象参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27536731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com