Javascript区块编码的一个示例

在《Javascript实现命名空间》这篇文章中提到了区块化编码,这里提供一个完整的示例。示例的代码是用于资讯首页提供网页快照功能的入口,不像日历、TabControl这种通用组件有现成的代码,所以需要自己写一个。代码名字就叫lookBack(回顾是这样拼的么?-_-!)。lookBack是一个函数,然后使用prototype定义了一些原型成员,在同一个页面中可以使用lookBack的多个实例。由于原有开发包中监听事件的函数好像对onchange事件捕捉不到,所以这里单独把事件监听写入到lookBack中。主要代码是三个函数类型的原型成员,它们之间使用this引用,代码如下。

  1. appendOption:function(node,nodeChildren,text,selectedIndex){
  2.     node.options.length = 0;//先将节点的选项清空
  3.     var childNode = null;
  4.     if(nodeChildren.constructor == Array){
  5.         for(var i in nodeChildren){
  6.             childNode = document.createElement("OPTION");
  7.             childNode.value = nodeChildren[i];
  8.             childNode.text  = nodeChildren[i] + text;
  9.             node.options.add(childNode);
  10.         }
  11.     }
  12.     else {
  13.         for(i = 1; i <= nodeChildren; i++){
  14.             childNode = document.createElement("OPTION");
  15.             childNode.value = i;
  16.             childNode.text  = i + text;
  17.             node.options.add(childNode);
  18.         }
  19.     }
  20.     node.options.selectedIndex = selectedIndex;
  21. },
  22. attachEvent:function(el,type,fn,range){
  23.     if (el.addEventListener)
  24.         el.addEventListener(type,function(){fn.apply(range)}, false);
  25.     else
  26.         el.attachEvent("on"+type, function(){fn.apply(range)});
  27. },
  28. init:function(){
  29.     this.appendOption($(this.yearHandler),[2006,2007,2008],this.yearText,2);
  30.     this.appendOption($(this.monthHandler),
  31.         12,
  32.         this.monthText,
  33.         this.currentTime.getMonth()
  34.     );
  35.     this.appendOption($(this.dayHandler),
  36.         parseInt(this.dayArray[this.currentTime.getMonth()]),
  37.         this.dayText,
  38.         this.currentTime.getDate()-1
  39.     );
  40.     this.appendOption($(this.hourHandler),[10,22],this.hourText,0);
  41.     this.attachEvent($(this.yearHandler),'change',this.yearOnChange,this);
  42.     this.attachEvent($(this.monthHandler),'change',this.monthOnChange,this);
  43.     this.attachEvent($(this.triggerHandler),'click',this.redirect,this);
  44. }

完整代码地址http://panweizeng.com/images/javascript/code_lookBack.js

[ 分类: 学习 ] 由 Pan 发表于 January 20, 2008 2:09 pm  固定链接 

Javascript区块编码的一个示例》 这篇文章一共有0 条评论   我也想说两句

还没有人对这篇文章发表评论,赶紧留一个吧。

RSS feed for comments on this post. TrackBack URI

相关文章:

发表评论