/*
源码作者: 石不易(Louis Shi)
联系方式: http://www.shibuyi.net
===================================================================================================
程序名称: JavaScript 封装库 Prototype 版
迭代版本: 无
功能总数: 14 个
功能介绍:
1. 实现代码连缀
2. id / name / tagName / class 节点获取
3. class 选择器添加与移除
4. css 规则添加与移除
5. 设置与获取元素内部文本
6. 设置与获取css
7. 实现 click 事件
*/ // 实例化入口
function $() {
return new Base();
} // 封装库构造方法
function Base() {
this.elements = [];
} // 获取id元素节点
Base.prototype.getId = function (id) {
this.elements.push(document.getElementById(id));
return this;
}; // 获取name元素节点
Base.prototype.getName = function (name, position) {
if (typeof position != 'undefined') { // 局部
var nodes = $().getTagName('*', position).elements;
for (var i = 0; i < nodes.length; i ++) {
if (nodes[i].getAttribute('name') == name) this.elements.push(nodes[i]);
}
} else { // 全局
var nodes = document.getElementsByName(name);
for (var i = 0; i < nodes.length; i ++) {
this.elements.push(nodes[i]);
}
}
return this;
}; // 获取tagName元素节点
Base.prototype.getTagName = function (tagName, position) {
if (typeof position != 'undefined') { // 局部
var nodes = $().getId(position).elements[0].getElementsByTagName(tagName);
} else { // 全局
var nodes = document.getElementsByTagName(tagName);
}
for (var i = 0; i < nodes.length; i ++) {
this.elements.push(nodes[i]);
}
return this;
}; // 获取class元素节点
Base.prototype.getClass = function (className, position) {
if (typeof position != 'undefined') { // 局部
var nodes = $().getTagName('*', position).elements;
} else { // 全局
var nodes = $().getTagName('*').elements;
}
for (var i = 0; i < nodes.length; i ++) {
if (nodes[i].className == className) this.elements.push(nodes[i]);
}
return this;
}; // 获取与设置innerHTML
Base.prototype.html = function (text) {
if (typeof text != 'undefined') { // 设置
for (var i = 0; i < this.elements.length; i ++) {
this.elements[i].innerHTML = text;
}
} else { // 获取
var html = [];
for (var i = 0; i < this.elements.length; i ++) {
html.push(this.elements[i].innerHTML);
}
return html;
}
return this;
}; // 获取与设置CSS
Base.prototype.css = function (cssKey, cssValue) {
if (typeof cssValue != 'undefined' || cssKey instanceof Array) { // 设置
for (var i = 0; i < this.elements.length; i ++) {
if (cssKey instanceof Array) {
var _cssKye, _cssValue, _css;
for (var j = 0; j < cssKey.length; j ++) {
if (cssKey[j].match(/([a-z]+)\s*=\s*([\w#]+)/i) != null) { // ['color=red', 'backgroundColor = green']
_css = cssKey[j].split(/\s*=\s*/);
_cssKey = _css[0];
_cssValue = _css[1];
this.elements[i].style[_cssKey] = _cssValue;
}
}
} else {
this.elements[i].style[cssKey] = cssValue;
}
}
} else { // 获取
var css = [];
for (var i = 0; i < this.elements.length; i ++) {
if (typeof window.getComputedStyle != 'undefined') { // W3C
css.push(window.getComputedStyle(this.elements[i], null)[cssKey]);
} else if (typeof this.elements[i].currentStyle != 'undefined') { // IE 6/7/8
css.push(this.elements[i].currentStyle[cssKey]);
}
}
return css;
}
return this;
}; // 检测class选择器
Base.prototype.hasClass = function (className) {
var results = [];
for (var i = 0; i < this.elements.length; i ++) {
results.push(!!this.elements[i].className.match(new RegExp('(\\s|^)' + className + '(\\s|$)')));
}
return results;
}; // 添加class选择器
Base.prototype.addClass = function (className) {
var space = '';
var results = this.hasClass(className);
for (var i = 0; i < results.length; i ++) {
if (!results[i]) {
if (this.elements[i].className != '') space = ' ';
this.elements[i].className += space + className;
}
}
return this;
}; // 移除class选择器
Base.prototype.removeClass = function (className) {
var results = this.hasClass(className);
for (var i = 0; i < results.length; i ++) {
if (results[i]) this.elements[i].className = this.elements[i].className.replace(new RegExp('(\\s|^)' + className + '(\\s|$)'), '');
}
return this;
}; // 添加样式规则Rule
Base.prototype.addRule = function (ruleName, ruleText, index, position) {
if (typeof index == 'undefined') index = 0;
if (typeof position == 'undefined') position = 0;
var sheet = document.styleSheets[index];
if (typeof sheet != 'undefined') {
if (typeof sheet.insertRule != 'undefined') { // W3C
sheet.insertRule(ruleName + ' {' + ruleText + '}', position);
} else if (sheet.addRule != 'undefined') { // IE 6/7/8
sheet.addRule(ruleName, ruleText, position);
}
}
return this;
}; // 移除样式规则Rule
Base.prototype.removeRule = function (index, position) {
if (typeof index == 'undefined') index = 0;
if (typeof position == 'undefined') position = 0;
var sheet = document.styleSheets[index];
if (typeof sheet != 'undefined') {
if (typeof sheet.deleteRule != 'undefined') { // W3C
sheet.deleteRule(position);
} else if (typeof sheet.removeRule != 'undefined') { // IE 6/7/8
sheet.removeRule(position);
}
}
return this;
}; // 鼠标 click 事件
Base.prototype.click = function (method) {
if (method instanceof Function) {
for (var i = 0; i < this.elements.length; i ++) {
this.elements[i].onclick = method;
}
}
return this;
};

关于 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 原型版发布!的更多相关文章

  1. 【PHP 模板引擎】Prototype 原型版发布!

    在文章的开头,首先要向一直关注我的人说声抱歉!因为原本是打算在前端框架5.0发布之后,就立马完成 PHP 模板引擎的初版.但我没能做到,而且一直拖到了15年元旦才完成,有很严重的拖延症我很惭愧,再次抱 ...

  2. 【JavaScript 封装库】BETA 5.0 测试版发布!

    JavaScript 前端框架(封装库) BETA 5.0 已于10月10日正式发布,今天开始提供 BETA 5.0 的 API 参考文献.相较于之前 5 个版本的发布都是草草的提供源代码,并没有很多 ...

  3. 【JavaScript 封装库】BETA 3.0 测试版发布!

    /* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...

  4. 【JavaScript 封装库】BETA 2.0 测试版发布!

    /* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...

  5. 【JavaScript 封装库】BETA 1.0 测试版发布!

    /* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...

  6. 【JavaScript 封装库】BETA 4.0 测试版发布!

    /* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...

  7. 【PHP 基础类库】Prototype 原型版教学文章!

    前言 大家好我是:石不易,今天我为大家带来了PHP基础类库原型版的教学文章,至此本人的作品线已分为三大类,分别是:JavaScript前端框架(封装库).PHP模板引擎.以及PHP基础类库.该类库历时 ...

  8. javascript中的prototype(原型)认识

    prototype实现了对象与对象的继承,在JS中变量,函数,几乎一切都是对象,而对象又有_ptoro_属性,这个属性就是通常说的原型,是用来指向这个对象的prototype对象,prototype对 ...

  9. 【JavaScript】关于prototype原型的一些链接

    http://www.cnblogs.com/slowsoul/archive/2013/05/30/3107198.html http://www.thinksaas.cn/group/topic/ ...

随机推荐

  1. Java中的ThreadLocal使用

    ThreadLocal用于下面的场景: 1. 不允许多个线程同时访问的资源 2. 单个线程存活过程只使用一个实例 官方定义如下: This class provides thread-local va ...

  2. Java 初始化和清理

    初始化和清理是影响代码安全的两个重要因素. 一.初始化 1. 方法重载 构造器与类名相同,成为强制重载方法名的原因之一.重载规则:每个重载的方法必须拥有独一无二的参数类型列表.不能根据返回值来区分重载 ...

  3. Linux配置SSH免密码登录

    CentOS配置SSH免密码登录为例说明:SSH远程登录的安全外壳协议有两种身份认证机制: - 用户名+密码 -密钥登录 环境准备 host1:192.168.0.10host2:192.168.0. ...

  4. Callable,Runnable的区别及用法

    编写多线程程序一般有三种方法,Thread,Runnable,Callable. Runnable和Callable的区别是: (1)Callable规定的方法是call(),Runnable规定的方 ...

  5. python处理时间和日期

    时间和日期  (图中错误修正:dt_obj.strftime(format))     import time, datetime 1. datetime obj 1) datetime dateti ...

  6. [转]怎么样快速入门AngularJS?

    本文转自:http://www.ngnice.com/posts/205af1ea1e13d2 怎么样快速学习AngularJS? 相信很多初学者都有过或者类似的疑问,其实这个问题没有标准的答案,每个 ...

  7. day03 - Python基础3

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数  温故知新                   ...

  8. DedeCMS织梦自定义图片字段调用出现{dede:img ..}

    做站过程中碰到这样一个问题,找到解决办法收藏分享:为什么在首页用自定义列表调用出来的图片字段不是正确的图片地址,而是类似于: {dede:img text='' width='270' height= ...

  9. HDU 4365——Palindrome graph——————【规律+快速幂】

    Palindrome graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  10. .NET面试题4

    常见面试题目: 1.字符串是引用类型类型还是值类型? 2.在字符串连接处理中,最好采用什么方式,理由是什么? 3.使用 StringBuilder时,需要注意些什么问题? 4.以下代码执行后内存中会存 ...