在使用JavaScript的多个实例页面的多个控件
-
25-09-2019 - |
题
我已经在ASP与Telligent CommunityServer积分创建的Web控制使用。控制被写入ASP一些10行C#后端的用于基于权限UI元素的可见性,但我说90%的官能度为直线上升的Javascript。
在控制精美的作品,直到你放弃在同一页上控制的两个实例 - 因为它们指的是完全一样的JavaScript函数,只有一个控制工程
如何借此功能,我有,此1200行的Javascript,并使其使得控制的每个实例可以参考它的JavaScript的每个唯一的实例?
解决方案
如果问题仅仅是找出哪些HTML元素触发的事件,然后,很容易 - 它传递给你的事件参数。 (然后你可以得到它的父元素,当然)。所以,如果我理解正确的问题,你有JavaScript函数引用一些控件,其中获得复制?
我不认为有任何神奇的解决方案在这里:你必须要做出的ID是唯一的。如果你不使用服务器端控件(自动处理此为您),那么可以使用一些服务器端产生的前缀或后缀,例如
<input id="<%= ParentControlId %>_mytextbox" type="text" />
其中ParentControlId
是父控件的唯一ID(你可以只使用Control.ID如果你不介意长时间的ID)。
当然,你应该尝试重新使用JavaScript函数,而不是复制它们为每个控件实例。如果您使用的服务器生成的ID的方法,你必须通过周围整个标识。如果您使用的前缀的方法你可以绕过前缀。
其他提示
如何在你的控制得到的JavaScript到页面中,然后呢?直接注射呢?您是否在使用的ScriptReference?一旦如果两个控制中引用的浏览器将只加载JS相同JS(同一URL)。
而且,您的JS写在任何旧实例的条款?例如你有喜欢负荷(oControlName)函数或没有加载()函数内部都有一个硬编码的实例名?
IMO,试图得到多个“的JavaScript”不是前进的方向 - 重构你的代码可能会得到你的答案更快