Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';这个javascript语句有什么问题?_Javascript_Events - Fatal编程技术网

什么';这个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);
}