使用来自另一个函数的对象参数调用函数
Calling function with object parameter from another function
我的目标很简单:我想拦截右键和左键按下,并相应地执行特定的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
查找它。
我建议对你的代码进行一个小的更改,这可能会让你的生活更轻松:
<img id="goleft" onclick="leftArrowPressed()" src="x"/>
<img id="goright" onclick="rightArrowPressed()" src="x"/>
将changePic()
函数更改为使用字符串而不是元素,这将使事情变得更容易一些。
如果你想坚持你目前的实现:你在查找中使用goLeft
,它应该是goleft
的。区分大小写!
相关文章:
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- 访问函数对象的上下文属性|如何
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 如何将函数对象从javascript传递到Polymer元素
- 为什么函数对象的实例没有继承函数原型属性
- 为什么我会从 JavaScript 函数返回一个命名函数(对象)
- 为什么实例构造函数指向最上面的函数构造函数对象
- 使用object.freeze()扩展函数对象-can't添加字段
- 为什么'这'与函数对象一起使用时会有不同的处理方式
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- 为什么茉莉花间谍不't通过引用解析函数对象
- 在 mongo map 中调用外部 javascript 函数(对象)或减少上下文的可能方法
- 在 JavaScript 中为函数对象添加别名
- 在 Express JS 中从路由调用函数对象
- 函数对象的名称属性是什么
- 构造函数对象
- 节点.js - 从另一个函数/对象发出事件
- 声明函数是否会创建具有函数名称和分配给它的函数对象的变量
- 函数对象__proto__和原型属性
- 类仿真 - 模块模式与函数对象