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では正常に機能しますが、MozillaFirefoxでは機能しません。誰かがコントロール発火イベントを見つける方法を提案できますか?

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

eventFirefoxにはこのプロパティがなく、代わりにイベントハンドラー関数にパラメーターとしてイベントを提供できるため、Firefoxでは未定義です。

ただし、コードはChromeとIEで正常に機能します

さらに、私はスクリプトを次のようなタイプにする<script type ='text/javascript'>だけでなく、<script type ='javascript'>

于 2012-12-27T09:06:06.400 に答える
0

キーワードを使用してボタンを渡すと、this イベントは不要です

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

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

}
于 2012-12-27T09:04:58.710 に答える
0

クリックハンドラーでにアクセスするeventには、HTMLではなくjQueryでアタッチします。

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);
    });
});

多くの人(私を含む)は、これをイベントハンドラーをアタッチする「適切な」方法だと考えています。いくつかの利点がありますが、そのうちイベントオブジェクトへのアクセスは1つだけです。

于 2012-12-27T09:15:28.977 に答える
0

event.targetの代わりにarguments[0].targetを使用してください。ほとんどのブラウザはイベントグローバル変数をサポートしていますが、Firefoxはサポートしていません。arguments [0]にはすべて同じプロパティと関数が含まれていますが、すべてのブラウザでサポートされています。

補足として:arguments配列のインデックスは、独自のコードで変更できます。私の現在のプロジェクトでは、arguments [0]には何らかの理由ですべてのコントローラー関数が含まれていますが、グローバルイベントメソッドとプロパティはarguments[1]に含まれています。これがなぜであるかは完全にはわかりませんが、arguments配列でデバッグを行って、含まれている値を確認し、それに応じて調整する必要がある場合があります。ただし、多くの場合、arguments[0]は機能するはずです。

于 2014-01-02T21:33:29.330 に答える