0

多くのページから何度も呼び出されるJavascript関数があります。

この関数内で、この関数を呼び出す要素を確認する必要があります。

関数呼び出しで「this」を渡すメソッドを知っています。その方法は使えません。私は単一のモジュールでしか作業していないからです。この関数を使用するモジュールは他にもたくさんあります。したがって、関数定義を変更すると、他のモジュール/ページでエラーがスローされます。

'this'を渡さずに、または関数定義を変更せずに、呼び出された要素を見つける他の方法はありますか?

4

2 に答える 2

1

functions署名を変更する必要はありません。arguments引数を渡し、変数を使用してそれらにアクセスできます。

例えば

<a href="#" onclick='foo()' id='one'>One</a>
<a href="#" onclick='foo(this)' id='two'>Two</a>
<script>
    function foo() {
    if(arguments.length==1)
    {
        alert("Called from element with id "+arguments[0].id);
    }    
    else{
        alert("No element specified")                 
    }
}
</script>

デモ

于 2012-09-12T08:33:03.473 に答える
1

エラーがスローされると確信していますか?すべての引数を渡さずに JavaScript 関数を呼び出すことは完全に合法です。

あまりにも多くの引数を渡すことも合法argumentsです。変数を使用してそれらにアクセスします。

于 2012-09-12T08:28:02.273 に答える