JS中如何在函数内部访问调用本函数的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中如何在函数内部访问调用本函数的元素相关的知识,希望对你有一定的参考价值。

我有一个<button onClick="affirmAlarm('$vo.value')">的元素(其中传入的参数是通过模版生成的)
通过单击来触发affirmAlarm()这个函数,因为可以触发该函数的<button>元素为多个,我现在需要在函数的内部来定位触发该函数的元素,应该怎么做?
仅通过这种模式实现,不通过事件绑定的形式。

通常javascript代码可以与HTML标签一起直接放在前端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿;所以一般有良好开发习惯的程序员都会把javascript代码放到独立的js文件中,其他页面通过引入该js文件来使用相应的 javascript代码。
今天在做一个小新闻系统的管理页面时因为图方便,刚开始所有用到的自定义javascript函数都放在了 admin.aspx页面中,功能实现后为了让前端页面显示简洁规范些,我把所有自定义的javascript函数都放到admin.js文件里了,然后在admin.aspx页面中通过<link href="script/admin.js" type="text/javascript" />引入该js文件。接着问题出现了,里面定义的函数有的调用正常,有的却出错了,提示缺少对象。如果是文件路径不对应该所有脚本函数都不能调用才对;但如果路径正确的话为什么有的函数可以正常调用有的却不能呢?不解!
接着上网查了一下,有人也遇到这种情况在CSDN中发贴提问,不过似乎也没解决;然后尝试用另一种方法引用JS文件:<script src="script/admin.js" type="text/javascript"></script>。再运行,所有脚本函数调用正常,看来问题是出现在调用方式上。那究竟javascript的各种引入方式有什么区别呢?下面让十万个为什么 为大家总结一下:
ASP.NET本身就提供了多种调用javascript脚本的方法,笔者在这里总结了六种调用方法,大家可以根据自己的使用习惯选择相应的调用方式了!
1、直接在前台页面调用自定义的javascript 函数:
很简单,在 head 元素之间加入 script 元素,将 type 元素设置为 " text/javascript "
如:
<head runat="server">
<script type="text/javascript" >
function ShowName(str)

alert("十万个为什么的站长是:("+str+")");

</script>
<title>using javascript</title>
参考技术A <button onClick="affirmAlarm(this,'$vo.value')">
把自己当成参数一起传进去,函数内部根据this的值进行判断,根据自己的需要来控制是否执行此函数

追问

嗯,这种方式我是懂的,通过传值、事件绑定其实都能实现。

我只是想搞清楚“如何在不传值的情况下,在函数内部定位触发本函数的元素”能不能实现,怎么实现。。

追答

给所有你需要点击事件的元素的父级元素添加一个点击事件,通过在函数内获取到事件源对象从而判断所点击的元素

追问

原来没这么复杂的,刚才朋友指点了下,实现了。
其实浏览器在对函数进行封装的时候,就会自动传入一个局部变量event,来标识事件对象。再通过event.target就可以定位到该元素了。
还是谢谢你了

追答

event.target就是获取事件源

本回答被提问者采纳
参考技术B 试试

<script>
function myfun1()

alert(arguments.callee);

myfun1();
</script>
参考技术C 我觉得都差不多吧!你觉得呢?

以上是关于JS中如何在函数内部访问调用本函数的元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OnClick 事件调用 JS 函数

在iframe中如何调用父窗体的方法?

JS 如何调用函数内部的函数(可以这样的理解:通过一个函数可以调用另一个函数的内部函数)

如何在 js puppeteer 中访问 map 函数之外的变量

如何在js函数中调用另外一个函数

如何在js函数中调用另外一个函数