65.9K
CodeProject 正在变化。 阅读更多。
Home

JavaScript 项目框架

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.33/5 (2投票s)

2010 年 5 月 18 日

CPOL
viewsIcon

11043

帮助简化在 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');
© . All rights reserved.