什么';这个javascript语句有什么问题?
对于那些因为之前有人问过而否决投票的好人:我的问题不是关于隐式事件参数。我不知道。事件参数是答案,而不是问题什么';这个javascript语句有什么问题?,javascript,events,Javascript,Events,对于那些因为之前有人问过而否决投票的好人:我的问题不是关于隐式事件参数。我不知道。事件参数是答案,而不是问题 该函数在用户单击图像(“onclick”)时调用,例如 显然,分配有问题,因为警报从来没有执行过。这里怎么了 (我尝试了window.event,但Dreamweaver没有作为window的成员提示event。无论如何,它也不起作用) 编辑 所有答案都提示隐式传递的事件。所以我添加了它作为函数的参数(无参数调用) 但我还是没有收到警报 将此作为参数传递会显示“type undefi
该函数在用户单击图像(“onclick”)时调用,例如
显然,分配有问题,因为警报从来没有执行过。这里怎么了
(我尝试了window.event
,但Dreamweaver没有作为window
的成员提示event
。无论如何,它也不起作用)
编辑
所有答案都提示隐式传递的事件
。所以我添加了它作为函数的参数(无参数调用)
但我还是没有收到警报
将此
作为参数传递会显示“type undefined”,但我希望这里是锚点类型。函数中缺少事件
参数,因此可能存在空引用异常
function myEventHandler(event) {
var eventSrcType=(event.srcElement) ? event.srcElement.type : 'type undefined';
alert(eventSrcType);
}
事件
变量未在任何地方定义。它通常作为第一个参数传递给事件回调,但不包括在函数签名中。尝试此函数签名:
function myEventHandler(event) {
onclick中有一个隐式事件参数
function myfunction(event)
{
console.log("srcElement " + event.srcElement);
}
IE pre-IE9无法通过,因此需要检查window.event。HTML代码必须如下所示
<img onclick="myEventHandler(this)" />
您应该会看到显示“类型未定义”
根据是否省略此
和/或事件
,您会得到不同的结果。尝试每种组合,直到你得到你想要的结果。以上所有答案都是正确的。您没有理解的是,必须将该事件对象传递给使用它的函数。我检查了你的代码,你的点击处理程序是
function onclick(event){showFS();}
但是它应该是function onclick(event){showFS(event);}
您的问题,此外,不指定event
参数是连接eventlistener的方式
通过将元素的onclick属性设置为“myEventHandler()”
,可以附加click事件处理程序,这是一种不好的方法,如下所示
- 要进行函数调用,必须对字符串求值
- 您直接调用函数,传递零个参数
如果只设置onclick=“myEventHandler”
,而不使用paren,就不会再显式调用没有参数的函数。但它仍然是一个字符串值,必须对其求值才能获得对实际函数的引用
您可能想做的是通过连接eventlistener,例如
然后,您的函数可以如下所示
var images = document.getElementsByTagName ("img");
[].forEach.call (images, function (img) {
img.addEventListener ("click", myEventHandler);
})
在onclick事件中我传递什么?还有,我不应该显示“类型未定义”吗?@stevenh你什么也不通过。每个事件处理程序将自动获取事件对象作为其第一个参数。您的代码失败并出现错误,因为事件
未定义,因此它不能具有srcElement
属性或任何其他属性。请学习检查您的浏览器控制台,您将看到这样的错误。@bažmegakapa如果有人在没有参数的情况下调用它,请在单击时为其元素分配“myEventHandler()”
attribute@downvoter当前位置请解释为什么这不是一个好问题。我没有,但可能是因为它以前被问过多次。。。停止使用内联事件处理程序(切换到addEventListener
)和那个愚蠢的javascript:void(0)
讨厌的东西。@bažmegakapa:既然你调用javascript:void(0)
既愚蠢又讨厌,你能告诉我们什么是正确的方法吗?链接没问题。@GeertGoeteyn很高兴你问:)。当您需要一个只调用Javascript点击事件处理程序的元素时,请使用
,而不是指向某个对象的链接-因此,使用Javascript:void(0)
只会令人讨厌。这是一种本应被遗忘的做法,一种过时的Javascript教程所保留的过去的糟糕记忆。我明白你的意思,但我的代码和你说的不一样。我没有在我的事件处理程序中调用showFS。我将showFS指定为事件处理程序。因此,我希望它涵盖相同的参数列表。
<img onclick="myEventHandler(this)" />
function myEventHandler(event) {
var eventSrcType=(event.srcElement) ? event.srcElement.type : 'type undefined';
alert(eventSrcType);
}
var images = document.getElementsByTagName ("img");
[].forEach.call (images, function (img) {
img.addEventListener ("click", myEventHandler);
})
function myEventHandler(event) {
var eventSrc = event.srcElement || event.target || {},
eventSrcType = eventSrc.type || "type undefined";
alert(eventSrcType);
}