当 JavaScript 具有 document.getElementById('<%= 控件时,将 JavaS
Move JavaScript to an external file when it has document.getElementById('<%= control.ClientID%>') in it
我有一个现有的 ASP.NET 网页,页面上内联了几百行JavaScript代码。
代码中充满了引用服务器端控件名称的代码,例如:
function SetVisibility(isVisible) {
document.getElementById('<%=someDiv.ClientID%>').style.display = (isVisible ? "block" : "none");
}
如果我将脚本移动到外部.JS文件,则.不再解析 ClientID 引用,并且页面在一堆错误中折叠。
解决这个问题的最佳方法是什么? 我可以更改每个函数以将控件作为参数,或者我可以将 .getElementByID 替换为 $find()...但我希望有一种更简单/更快的方法。
您不能将内联 ASP.NET 语法(如<%= or <#
)移动到外部 JavaScript 文件中。
您所需要的只是,您应该对元素 id 有适当的引用。
案例1:
ID由运行时自动生成 ASP.Net 没有客户端 ID Moode 可用(ASP.Net <4.0)
解决方案 :
在.aspx页面中
<script type="text/javascript">
var myHtmlElementIDs={};
myHtmlElementIDs.ContainerDiv='<%=someDiv.ClientID%>';
</script>
在 JS 文件中
function SetVisibility(isVisible) {
document.getElementById(myHtmlElementIDs.ContainerDiv).style.display
= (isVisible ? "block" : "none");
}
案例2:
控制生成客户端 ID。没有母版页或嵌套控件 已使用或
ClientIDMode=Static
可用(ASP.Net>= 4.0)
解决方案:无需担心 ClientID,因为它不会被更改
function SetVisibility(isVisible) {
document.getElementById('actualControlID').style.display
= (isVisible ? "block" : "none");
}
相关文章:
- 音频控件在mouseover上显示,在mouseout上淡出
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 如何更改文本框控件的不透明度值
- 所有控件的组合框
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 在angularjs中创建自定义控件的推荐方法
- 自定义控件中的双向绑定在SAPUI5中不起作用
- 如何在ASP中为用户控件添加Javascript对象网
- Dynamics 2016内部部署Crm客户端脚本.选项集控件类型缺少方法
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 在HTML5画布上添加按钮和控件
- 隐藏HTML5视频控件
- 向ASP控件添加自定义事件
- 从IE中的不同元素调用时,文件输入控件未正确启动
- 当用户点击音频控件时,无法接收点击事件
- 在codeigniter中具有控件的looper.js
- 当 JavaScript 具有 document.getElementById('<%= 控件时,将 JavaS