【JavaScript 封装库】Prototype 原型版发布!

  1 /*
  2     源码作者: 石不易(Louis Shi)
  3     联系方式: http://www.shibuyi.net
  4     ===================================================================================================
  5     程序名称: JavaScript 封装库 Prototype 版
  6     迭代版本: 无
  7     功能总数: 14 个
  8     功能介绍: 
  9         1. 实现代码连缀
 10         2. id / name / tagName / class 节点获取
 11         3. class 选择器添加与移除
 12         4. css 规则添加与移除
 13         5. 设置与获取元素内部文本
 14         6. 设置与获取css
 15         7. 实现 click 事件
 16 */
 17 
 18 // 实例化入口
 19 function $() {
 20     return new Base();
 21 }
 22 
 23 // 封装库构造方法
 24 function Base() {
 25     this.elements = [];
 26 }
 27 
 28 // 获取id元素节点
 29 Base.prototype.getId = function (id) {
 30     this.elements.push(document.getElementById(id));
 31     return this;
 32 };
 33 
 34 // 获取name元素节点
 35 Base.prototype.getName = function (name, position) {
 36     if (typeof position != ‘undefined‘) { // 局部
 37         var nodes = $().getTagName(‘*‘, position).elements;
 38         for (var i = 0; i < nodes.length; i ++) {
 39             if (nodes[i].getAttribute(‘name‘) == name) this.elements.push(nodes[i]);
 40         }
 41     } else { // 全局
 42         var nodes = document.getElementsByName(name);
 43         for (var i = 0; i < nodes.length; i ++) {
 44             this.elements.push(nodes[i]);
 45         }
 46     }
 47     return this;
 48 };
 49 
 50 // 获取tagName元素节点
 51 Base.prototype.getTagName = function (tagName, position) {
 52     if (typeof position != ‘undefined‘) { // 局部
 53         var nodes = $().getId(position).elements[0].getElementsByTagName(tagName);
 54     } else { // 全局
 55         var nodes = document.getElementsByTagName(tagName);
 56     }
 57     for (var i = 0; i < nodes.length; i ++) {
 58         this.elements.push(nodes[i]);
 59     }
 60     return this;
 61 };
 62 
 63 // 获取class元素节点
 64 Base.prototype.getClass = function (className, position) {
 65     if (typeof position != ‘undefined‘) { // 局部
 66         var nodes = $().getTagName(‘*‘, position).elements;
 67     } else { // 全局
 68         var nodes = $().getTagName(‘*‘).elements;
 69     }
 70     for (var i = 0; i < nodes.length; i ++) {
 71         if (nodes[i].className == className) this.elements.push(nodes[i]);
 72     }
 73     return this;
 74 };
 75 
 76 // 获取与设置innerHTML
 77 Base.prototype.html = function (text) {
 78     if (typeof text != ‘undefined‘) { // 设置
 79         for (var i = 0; i < this.elements.length; i ++) {
 80             this.elements[i].innerHTML = text;
 81         }
 82     } else { // 获取
 83         var html = [];
 84         for (var i = 0; i < this.elements.length; i ++) {
 85             html.push(this.elements[i].innerHTML);
 86         }
 87         return html;
 88     }
 89     return this;
 90 };
 91 
 92 // 获取与设置CSS
 93 Base.prototype.css = function (cssKey, cssValue) {
 94     if (typeof cssValue != ‘undefined‘ || cssKey instanceof Array) { // 设置
 95         for (var i = 0; i < this.elements.length; i ++) {
 96             if (cssKey instanceof Array) {
 97                 var _cssKye, _cssValue, _css;
 98                 for (var j = 0; j < cssKey.length; j ++) {
 99                     if (cssKey[j].match(/([a-z]+)\s*=\s*([\w#]+)/i) != null) { // [‘color=red‘, ‘backgroundColor = green‘]
100                         _css = cssKey[j].split(/\s*=\s*/);
101                         _cssKey = _css[0];
102                         _cssValue = _css[1];
103                         this.elements[i].style[_cssKey] = _cssValue;
104                     }
105                 }
106             } else {
107                 this.elements[i].style[cssKey] = cssValue;
108             }
109         }
110     } else { // 获取
111         var css = [];
112         for (var i = 0; i < this.elements.length; i ++) {
113             if (typeof window.getComputedStyle != ‘undefined‘) { // W3C
114                 css.push(window.getComputedStyle(this.elements[i], null)[cssKey]);
115             } else if (typeof this.elements[i].currentStyle != ‘undefined‘) { // IE 6/7/8
116                 css.push(this.elements[i].currentStyle[cssKey]);
117             }
118         }
119         return css;
120     }
121     return this;
122 };
123 
124 // 检测class选择器
125 Base.prototype.hasClass = function (className) {
126     var results = [];
127     for (var i = 0; i < this.elements.length; i ++) {
128         results.push(!!this.elements[i].className.match(new RegExp(‘(\\s|^)‘ + className + ‘(\\s|$)‘)));
129     }
130     return results;
131 };
132 
133 // 添加class选择器
134 Base.prototype.addClass = function (className) {
135     var space = ‘‘;
136     var results = this.hasClass(className);
137     for (var i = 0; i < results.length; i ++) {
138         if (!results[i]) {
139             if (this.elements[i].className != ‘‘) space = ‘ ‘;
140             this.elements[i].className += space + className;
141         }
142     }
143     return this;
144 };
145 
146 // 移除class选择器
147 Base.prototype.removeClass = function (className) {
148     var results = this.hasClass(className);
149     for (var i = 0; i < results.length; i ++) {
150         if (results[i]) this.elements[i].className = this.elements[i].className.replace(new RegExp(‘(\\s|^)‘ + className + ‘(\\s|$)‘), ‘‘);
151     }
152     return this;
153 };
154 
155 // 添加样式规则Rule
156 Base.prototype.addRule = function (ruleName, ruleText, index, position) {
157     if (typeof index == ‘undefined‘) index = 0;
158     if (typeof position == ‘undefined‘) position = 0;
159     var sheet = document.styleSheets[index];
160     if (typeof sheet != ‘undefined‘) {
161         if (typeof sheet.insertRule != ‘undefined‘) { // W3C
162             sheet.insertRule(ruleName + ‘ {‘ + ruleText + ‘}‘, position);
163         } else if (sheet.addRule != ‘undefined‘) { // IE 6/7/8
164             sheet.addRule(ruleName, ruleText, position);
165         }
166     }
167     return this;
168 };
169 
170 // 移除样式规则Rule
171 Base.prototype.removeRule = function (index, position) {
172     if (typeof index == ‘undefined‘) index = 0;
173     if (typeof position == ‘undefined‘) position = 0;
174     var sheet = document.styleSheets[index];
175     if (typeof sheet != ‘undefined‘) {
176         if (typeof sheet.deleteRule != ‘undefined‘) { // W3C
177             sheet.deleteRule(position);
178         } else if (typeof sheet.removeRule != ‘undefined‘) { // IE 6/7/8
179             sheet.removeRule(position);
180         }
181     }
182     return this;
183 };
184 
185 // 鼠标 click 事件
186 Base.prototype.click = function (method) {
187     if (method instanceof Function) {
188         for (var i = 0; i < this.elements.length; i ++) {
189             this.elements[i].onclick = method;
190         }
191     }
192     return this;
193 };

 

关于 Prototype 原型版核心源码与实例演示的获取请移动至官网下载!

 

感谢大家积极评测给予意见!

 

官网地址:http://www.shibuyi.net

CNBlogs 博客:http://www.cnblogs.com/shibuyi/

CSDN 博客:http://blog.csdn.net/louis_shi/

ITeye 博客:http://shibuyi.iteye.com/

 

【JavaScript 封装库】Prototype 原型版发布!,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。