具有多个Javascript实例的页面上的多个控件

具有多个Javascript实例的页面上的多个控件,javascript,asp.net,user-interface,telligent,Javascript,Asp.net,User Interface,Telligent,我在ASP中创建了一个Web控件,用于与Intelligent CommunityServer集成。该控件是用ASP编写的,带有大约10行C#后端,用于根据权限控制UI元素的可见性,但我认为90%的功能都是纯Javascript 该控件工作得很好,直到您在同一页上删除了该控件的两个实例——因为它们引用完全相同的Javascript函数,所以只有一个控件工作 我如何利用我拥有的这个功能,这1200行Javascript,并使它使控件的每个实例都可以引用它的每个唯一的Javascript实例?如果问

我在ASP中创建了一个Web控件,用于与Intelligent CommunityServer集成。该控件是用ASP编写的,带有大约10行C#后端,用于根据权限控制UI元素的可见性,但我认为90%的功能都是纯Javascript

该控件工作得很好,直到您在同一页上删除了该控件的两个实例——因为它们引用完全相同的Javascript函数,所以只有一个控件工作


我如何利用我拥有的这个功能,这1200行Javascript,并使它使控件的每个实例都可以引用它的每个唯一的Javascript实例?

如果问题只是找出哪个HTML元素触发了一个事件,那么这很容易——它在事件参数中传递给您。(当然,你可以得到它的父元素。)如果我正确理解了这个问题,你有JavaScript函数引用一些控件,这些控件被复制了

我不认为这里有什么神奇的解决方案:你只需要让ID独一无二。如果您不使用服务器端控件(自动为您处理),那么您可以使用一些服务器端生成的前缀或后缀,例如

<input id="<%= ParentControlId %>_mytextbox" type="text" />

其中,
ParentControlId
是父控件的唯一ID(如果不介意长ID,可以使用control.ID)


当然,您应该尝试重用JavaScript函数,而不是为每个控件实例复制它们。如果使用服务器生成的ID方法,则必须传递整个ID。如果您使用的是前缀方法,那么只需传递前缀即可。

您的控件是如何将JavaScript导入页面的?直接注射?您正在使用脚本引用吗?如果两个控件引用相同的JS(相同的URL),浏览器将只加载JS一次

另外,您的JS是根据任何旧实例编写的吗?e、 g.是否有类似Load(oControlName)的函数,或者Load()函数中是否有硬编码的实例名


在我看来,尝试获取多个“JavaScripts”并不是前进的方向——重构代码可能会更快地得到答案。

我们需要看一些示例代码,因为编写的问题没有多大意义。嗯,有太多的代码需要示例。。。我创建了一个包含Javascript的ASCxWeb控件。当我将其中两个ASCX文件放在ASPX页面上时,会出现重复的Javascript。例如,它们都引用了一个Javascript Load()函数,但该Load()函数不知道要加载哪个控件。有意义吗?这是TC5+的小部件还是另一个版本的Telligent的控件?