4
<script type ='javascript'>
    function fun(userID) {
        var btn = event.target; // error 'event' undefine in mozilla 
        alert(btn.id);
    }
</script>

<asp:linkButton id ="target" style =" cursor:pointer" onclick ="fun('1')" >click here </asp:LinkButton>

我是 JavaScript 新手,我已经编写了上面的代码,这段代码在 Google chrome 中运行良好,但在 Mozilla Firefox 中无法运行。谁能建议如何找到控制触发事件?

4

5 回答 5

11

将事件传递给函数:

<asp:linkButton id ="target" style =" cursor:pointer" onclick ="fun(event, '1')" >click here </asp:LinkButton>

function fun(event, userID)
{
    event= event|| window.event;
    var btn = event.target; 
    alert(btn.id);
}

或者

确保您的事件不是未定义的

function fun(userID)
{
    var e = event || window.event;
    var btn = e.target; 
    alert(btn.id);
}
于 2012-12-27T09:03:00.073 回答
0

如果您使用关键字传递按钮,this 则不需要事件

...onclick="fun(this,1)"

function fun(but, userID) { 
  var butID=but.id

}
于 2012-12-27T09:04:58.710 回答
0

event在 firefox 中未定义,因为 firefox 没有此属性,而是您可以将事件作为参数提供给事件处理函数。

但是您的代码可以在 Chrome 和 IE 中运行

此外,我还会有脚本类型<script type ='text/javascript'>,而不仅仅是<script type ='javascript'>

于 2012-12-27T09:06:06.400 回答
0

要访问event单击处理程序中的 ,请将其附加到 jQuery 而不是 HTML 中。

HTML:

<a id ="target" style ="cursor:pointer" data-value="1">click here</a>

Javascript:

$(function() {
    $("#target").on('click', function(event) {
        event.preventDefault();
        var btn = this;
        var value = $(this).data('value');
        alert(btn.id + ', ' + value);
    });
});

许多人(包括我自己)认为这是附加事件处理程序的“正确”方式。有几个优点,访问事件对象只是其中之一。

于 2012-12-27T09:15:28.977 回答
0

使用 arguments[0].target 而不是 event.target。大多数浏览器都支持 event 全局变量,但 firefox 不支持。arguments[0] 包含所有相同的属性和函数,但所有浏览器都支持。

附带说明:参数数组中的索引可以由您自己的代码更改。在我当前的项目中,arguments[0] 出于某种原因包含我所有的控制器功能,而全局事件方法和属性包含在 arguments[1] 中。不完全确定这是为什么,但您可能需要对参数数组进行一些调试,以查看它包含哪些值并进行相应调整。然而,arguments[0] 通常应该起作用。

于 2014-01-02T21:33:29.330 回答