如何在不传递此信息的情况下查找被调用的元素

How to find invoked element without passing this

本文关键字:情况下 查找 元素 调用 信息      更新时间:2023-09-26

我有一个Javascript函数,它在许多页面上被多次调用。

在这个函数中,我必须检查这个函数调用的元素。

我知道一个通过函数调用传递"this"的方法。我不能用那种方法。因为我只在一个模块上工作。还有许多其他模块使用此功能。因此,如果我更改函数定义,它将为其他模块/页面抛出错误。

是否有其他方法可以在不传递"this"或不更改函数定义的情况下找到被调用的元素。

您确定它会抛出错误吗?调用javascript函数而不传递所有参数是完全合法的。

传递过多的参数也是合法的,您可以使用arguments变量来访问它们。

您将不必修改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>

演示