首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个Javascript实例的页面上的多个控件

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

Stack Overflow用户
提问于 2010-05-11 07:17:42
回答 2查看 1.8K关注 0票数 0

我已经在ASP中创建了一个Web控件,用于与Telligent CommunityServer集成。这个控件是用ASP编写的,有大约10行C#后端,用于根据权限控制UI元素的可见性,但我想说的是,90%的功能都是直接的Javascript。

该控件运行良好,直到您将该控件的两个实例拖放到同一页面上--因为它们引用完全相同的Javascript函数,所以只有一个控件可以运行。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-11 07:26:22

如果问题只是简单地找出是哪个HTML元素触发了事件,那么这很容易-它会在事件参数中传递给您。(当然,然后您可以获得它的父元素。)所以,如果我没理解错的话,你有引用了一些控件的JavaScript函数,这些控件会被复制?

我不认为这里有任何神奇的解决方案:您只需使ID唯一即可。如果你没有使用服务器端控件(它会自动为你处理),那么你可以使用一些服务器端生成的前缀或后缀,例如。

代码语言:javascript
复制
<input id="<%= ParentControlId %>_mytextbox" type="text" />

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

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

票数 1
EN

Stack Overflow用户

发布于 2010-05-11 08:14:43

那么,您是如何控制将JavaScript放入页面的呢?直接注射?你在用ScriptReference吗?如果两个控件引用相同的JS (相同的URL),浏览器将只加载一次JS。

另外,你的JS是用旧实例写的吗?例如,你有像Load(oControlName)这样的函数吗,或者Load()函数里面有硬编码的实例名吗?

尝试获得多个'JavaScripts‘不是前进的方式-重构你的代码可能会更快地得到答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2807074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档