什么'这个javascript语句错了
What's wrong with this javascript statement?
对于那些因为之前被问到而投了反对票的好人:我的问题不是关于隐式事件参数。我不知道。事件参数是答案,而不是问题
function myEventHandler() {
var eventSrcType=(event.srcElement) ? event.srcElement.type : 'type undefined';
alert(eventSrcType);
}
当用户点击一个图像("onclick")时调用该函数,例如
<a href="javascript:void(0)" onclick="myEventHandler();">
显然,赋值有问题,因为alert
从未执行过。这里怎么了?
(我试过window.event
,但Dreamweaver没有提示event
是window
的成员。无论如何,它也不起作用)
编辑
所有答案都暗示隐含传递的event
。因此,我添加了作为函数的参数(无参数调用),
function myEventHandler(event) {
var eventSrcType=(event.srcElement) ? event.srcElement.type : 'type undefined';
alert(eventSrcType);
}
但我仍然没有得到警报。
将this
作为参数传递会显示"type undefined",但此处需要锚类型。
函数中缺少event
参数,因此可能会出现null引用异常。
function myEventHandler(event) {
var eventSrcType=(event.srcElement) ? event.srcElement.type : 'type undefined';
alert(eventSrcType);
}
event
变量没有在任何地方定义。它通常作为第一个参数传递给事件回调,但它不包含在函数签名中。试试这个功能签名:
function myEventHandler(event) {
以上所有答案都是正确的。您没有理解的是,您必须将该事件对象传递给使用它的函数function onclick(event) { showFS();}
,但它应该是function onclick(event) { showFS(event);}
onclick 中有一个隐式事件参数
function myfunction(event)
{
console.log("srcElement " + event.srcElement);
}
http://javascript.info/tutorial/obtaining-event-object
IE9之前的IE没有通过,所以您需要检查window.event.
此外,您的问题是,不指定event
参数是附加事件侦听器的方式。
您通过将元素的onclick属性设置为"myEventHandler()"
来附加您的点击事件处理程序,这有点糟糕,就像一样
- 为了进行函数调用,必须对字符串进行求值
- 您直接调用函数,传递零个参数
如果去掉parens,只设置onclick="myEventHandler"
,就不会再显式调用没有参数的函数。但它仍然是一个字符串值,必须对其进行求值才能获得对实际函数的引用。
您可能想要做的是通过EventTarget.prototype.addEventListener
连接您的事件侦听器,例如
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);
}
HTML代码必须看起来像这个
<img onclick="myEventHandler(this)" />
JS:
function myEventHandler(event) {
var eventSrcType=(event.srcElement) ? event.srcElement.type : 'type undefined';
alert(eventSrcType);
}
您应该看到"type undefined"显示。
根据是否省略this
和/或event
,会得到不同的结果。尝试每种组合,直到你得到你想要的结果。
- Google Chrome 不会执行所有 JavaScript 语句
- 嵌套于..在JavaScript语句中
- Javascript语句的哪一部分是字面意思
- 什么'这个javascript语句错了
- 我的 javascript 语句不会运行其 else 语句,即使未选中复选框
- 可以在Applescript中执行内联JavaScript语句
- 如果不是 javascript 语句
- 关于字符串串联的令人困惑的 JavaScript 语句
- 将 php 变量添加到从之前转换为 php 的 html/javascript 语句中
- 是否可以从文档中的输入字段执行简单的 javascript 语句
- 增强的 Javascript 语句使用安全
- 将 html 表单值视为 JavaScript 语句
- 添加 JavaScript 语句
- Javascript 语句执行顺序
- jsp 命令<%=%> 在 Javascript 语句中使用时被忽略,在 taglib 标记语句内
- 为什么当我执行这个 JavaScript 语句来创建一个新的 Number 对象(使用 new 运算符)时,Chrome
- 下面的javascript语句是如何评估的
- 使用highcharts更改javascript语句中的marginLeft和marginRight
- 有没有合适的方法将特定的javascript语句翻译成java
- 解释以下 JavaScript 语句