JS插件封装——生成表格
2017-11-14 16:20
435 查看
调用页面HTML代码如下:
页面效果如下:
![](http://img.blog.csdn.net/20171114161938982?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTU9PTkNPTQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
知识点:
一、插件是功能的集合 例如jQuery和vue.js,面向的开发人员,而不是普通客户
插件都是写在函数作用域中的,并暴露出一个 实例(对象)or构造函数(产生对象的构造函数)
函数作用域,防止变量冲突
函数作用域中声明全局函数
(function(){
window.fn=function(){
}
})();
//IIEF(立即执行函数) 通过作用域在全局作用域下暴露一个名字
插件封装原则:
1、暴露出来的实例必须只有一个
2、IIFE包裹 !执行包裹 函数作用域保护
3、实例方法不要写在函数中
备注:style.width 可改不可读
f.__proto__ ===fn.prototype; //true __proto__:关系的维持
原型链:关系
JS参考的为C和self语言
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div> 输入行数: <input type="text" name="" id="rows"><br> 输入列数:<input type="text" name="" id="cols"><hr> <input type="button" value="生成表格" onclick="build()"> </div> <div id="table"></div> <script src="table.js"></script> <script> function build(){ var rows=document.getElementById("rows").value; var cols=document.getElementById("cols").value; var table=new Table(document.getElementById("table")); document.getElementById("table").innerHTML=""; table.createTable({ rows:rows,cols:cols }); } </script> </body> </html>插件js代码如下:
(function(){ window.Table=function(node){ this.nodeEle=node; this.width=node.clientWidth; //console.log("创建Table成功"); } Table.prototype={ createTable:function(json){ if(!json){ throw "Place check your rows and cols"; }else{ this.width=this.width/json.cols; this.cssStyle(); console.log(this.width); //console.log("行数为:"+json.rows+"\n列数为:"+json.cols); /*生成行*/ for(var i=0,rows=json.rows;i<rows;i++){ var rowNode=document.createElement("div"); rowNode.className = "row"; if(i%2){ rowNode.className += " double"; } /*生成列*/ for(var j=0,cols=json.cols;j<cols;j++){ var colNode=document.createElement("div"); colNode.className="col"; rowNode.appendChild(colNode); } this.nodeEle.appendChild(rowNode); } } //console.log(this.nodeEle); }, cssStyle:function(){ var style=document.getElementsByTagName("style")[0]; if(!style){ style=document.createElement("style"); } style.innerHTML += " #table .col{float:left;width:"+this.width+"px;box-sizing:border-box;border:1px solid #999;height:36px}" + " #table .row::after{content:'';display:block;clear:both;}" + " #table .double{background-color:skyblue}"; document.head.appendChild(style); }, }; }());
页面效果如下:
知识点:
一、插件是功能的集合 例如jQuery和vue.js,面向的开发人员,而不是普通客户
插件都是写在函数作用域中的,并暴露出一个 实例(对象)or构造函数(产生对象的构造函数)
函数作用域,防止变量冲突
函数作用域中声明全局函数
(function(){
window.fn=function(){
}
})();
//IIEF(立即执行函数) 通过作用域在全局作用域下暴露一个名字
插件封装原则:
1、暴露出来的实例必须只有一个
2、IIFE包裹 !执行包裹 函数作用域保护
3、实例方法不要写在函数中
备注:style.width 可改不可读
f.__proto__ ===fn.prototype; //true __proto__:关系的维持
原型链:关系
JS参考的为C和self语言
相关文章推荐
- 分享一个自己写的table表格排序js插件(高效简洁)
- 如何用原生js封装一个属于自己的插件
- 原生JS封装Ajax插件(同域&&jsonp跨域)
- 原生js封装table表格操作,获取任意行列td,任意单行单列方法
- 实现类似EXTJS表格插件 Flexgrid.js GridView中使用的记录
- JQuery插件第三十六个:简单解析json生成数据表格
- 封装了一个自动生成渐变字的JS类(clip)
- JS控制网页动态生成任意行列数表格的方法
- JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档
- jquery.qrcode.js 插件生成二维码
- js动态生成表格,删除表格
- JS封装插件:实现文件读写功能
- js动态生成表格
- js封装成插件
- 分享一个自己写的table表格排序js插件(高效简洁)
- btFormbuilder.js 一个基于bootstrap的jquery插件,用于生成form表单
- jquery表格分组插件-jquery.tablegroup.js
- 动态生成js表格
- 封装jQuery表格插件jqGrid,控件化jqGrid(二):显示
- Firebreath生成的Windows插件窗口对象与JS交互对象