JavaScript 项目框架






3.33/5 (2投票s)
帮助简化在 ASP.NET 和 iNamingContainer 中使用 JavaScript。
引言
本文将介绍该框架的项管理部分。
背景
在继承了一个使用母版页的 ASP.NET 项目后,我一直对使用服务器端包含来请求客户端 ID 感到沮丧。一些开发需要大量的 DHTML,以下代码在使用 iNamingContainer
时,可以更轻松地访问服务器渲染的控件。
代码
以下是该项框架的代码
var ctlHolder = function(id, ctl) {
this.ID = id;
this.Ctl = ctl;
}
var ctlDef = function() {
this.Items = new Array();
this.Add = function(item) { this.Items[this.Items.length] = item; };
this.Get = function(id) {
for (var obj in this.Items)
if (this.Items[obj].ID == id)
return this.Items[obj].Ctl;
return null;
}
this.EndID = function(id) {
var index = id.lastIndexOf('$');
if (index == -1)
return id;
else
return id.substring(index + 1);
}
}
var ctl = new ctlDef();
function catalogItems(items) {
if (items == null) items = document.getElementsByTagName('html');
for (var obj in items) {
var item = items[obj];
if (item.id)
ctl.Add(new ctlHolder(ctl.EndID(item.id), item));
if (item.childNodes)
catalogItems(item.childNodes);
}
}
在页面加载时需要调用 "catalogItems
" 函数。可以通过将以下属性添加到 body
元素来实现
onload="catalogItems(null);"
这段代码运行速度非常快,可以解析和编目,在 0.1 秒内渲染 300K HTML。完成此操作后,您可以替换复杂的元素引用,例如
document.getElementById('ctl_001$ctl_content1$txtUsername')
用
ctl.Get('txtUsername');