zoukankan      html  css  js  c++  java
  • 2016/11/17 周四 <javascript的封装简单示例>

    这是一个简单的javascript代码封装的示例以及封装后的调用方法:

    var ticker={
                n:0,
                add:function()
                {
                    this.n++;
                },
                show:function()
                {
                    alert(this.n);
                }
            }
            ticker.add();
            ticker.add();
            ticker.show();

    以下是案例中的代码封装方法,解决了一定的安全问题与代码冗余问题:

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title>Web SQL Database</title>
            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        </head>
    
        <body>
            <h2>Web SQL Database</h2>
            <div>
                <button id="btnCreateTable">创建表</button>
                <button id="btnDropTable">删除表</button>
                <table border="1" width="80%" id="tabGoods">
                    <tr>
                        <th>编号</th>
                        <th>名称</th>
                        <th>价格</th>
                        <th>删除</th>
                    </tr>
                </table>
                <fieldset>
                    <legend>商品信息</legend>
                    <p>
                        <label for="name">名称:</label>
                        <input type="text" id="name" value="" />
                    </p>
                    <p>
                        <label for="price">价格:</label>
                        <input type="text" id="price" value="" />
                    </p>
                    <p>
                        <input type="hidden" id="goodsId" />
                        <button id="btnInsert">添加</button>
                        <button id="btnUpdate">更新</button>
                    </p>
                </fieldset>
            </div>
            <h2 id="msg"></h2>
            <script src="js/jquery-1.11.3.min.js" type="text/javascript" charset="utf-8"></script>
            <script type="text/javascript">        
              //定义当前应用的对象
              var dbApp={
                   //打开数据库
                   openDb:function()
                   {
                       //创建名称为products,版本为1.0,描述为产品数据库,3M大小的数据库
                    this.db = openDatabase("products", 1.0, "产品数据库", 1024 * 1024 * 3, function() {
                        this.log("创建或打开数据库完成");
                    });
                   },
                   //初始化
                   init:function()
                   {
                       //打开或创建数据库
                       this.openDb();
                       //绑定事件
                       this.bindEvent();
                       //展示数据
                       this.select();
                       this.log("初始化完成");
                   },
                   //绑定事件
                   bindEvent:function()
                   {
                       //添加事件
                       $("#btnInsert").click(this.insert);
                       $("#btnUpdate").click(this.update);
                       $("#btnCreateTable").click(this.createTable);
                       $("#btnDropTable").click(this.dropTable);
                   },
                   //显示消息
                log:function(info) {
                    $("#msg")[0].innerHTML += info + "<br/>";
                },
                //执行sql的通用方法 result.rowsAffected 影响行数
                //callback执行成功时的回调方法
                exeSql:function(sql,title,param,callback) {
                    title=title||"操作";
                    this.db.transaction(function(tx) {
                        tx.executeSql(
                            sql, param||[],
                            function(tx, result) {
                                dbApp.log(title+'成功');
                                if(callback){  //如果有参数
                                    callback(result);
                                }
                            },
                            function(tx, error) {
                                dbApp.log(title+'失败' + error.message);
                            });
                    });
                },
                //创建表
                createTable:function() {
                    dbApp.exeSql("create table IF not EXISTS goods(id integer primary key autoincrement,name text not null,price double)","创建表");
                },
                //删除表
                dropTable:function() {
                    dbApp.exeSql("drop table IF EXISTS goods","删除表");
                },
                //展示,加载数据
                select:function() {
                    dbApp.exeSql("select id,name,price from goods","查询",[],function(result) {
                               //将表格中tr索引大于0的元素删除
                                $("#tabGoods tr:gt(0)").remove();
                                for(var i = 0; i < result.rows.length; i++) {
                                    var tr = $("<tr/>");
    
                                    $("<td/>").text(result.rows.item(i)["id"]).appendTo(tr);
                                    $("<td/>").text(result.rows.item(i)["name"]).appendTo(tr);
                                    $("<td/>").text(result.rows.item(i)["price"]).appendTo(tr);
                                    var del = $("<a href='#' onclick='dbApp.del(" + result.rows.item(i)["id"] + ",this)' >删除 | </a>")
                                    var edit = $("<a href='#' onclick='dbApp.edit(" + result.rows.item(i)["id"] + ",this)' >修改</a>")
                                    $("<td/>").append(del).append(edit).appendTo(tr);
                                    tr.appendTo("#tabGoods");
                                }
                                });
                },
                //插入数据
                insert:function() {
                    //如果insert方法被绑定为事件,则this表示事件发生的对象
                    dbApp.exeSql("insert into goods(name,price) values(?,?)","添加",[$("#name").val(), $("#price").val()],function(){
                        dbApp.select();
                    });
                },
                //删除 
                del:function(id, link) {
                    dbApp.exeSql("delete from goods where id=?","删除",[id],function(result){
                        //查找a标签最近的一个tr父元素,移除
                        $(link).closest("tr").remove();
                    });
                },
                //编辑
                edit:function(id) {
                    dbApp.exeSql("select id,name,price from goods where id=?","编辑",[id],function(result) {
                                $("#name").val(result.rows.item(0)["name"]);
                                $("#price").val(result.rows.item(0)["price"]);
                                $("#goodsId").val(result.rows.item(0)["id"]);
                                dbApp.log("修改后请保存");
                        });
                },
                //更新
                update:function() {
                    if($("#goodsId").val()) {
                        dbApp.exeSql("update goods set name=?,price=?  where id=?","更新",[$("#name").val(), $("#price").val(), $("#goodsId").val()],function(result) {
                                    dbApp.select();
                                    $("#goodsId").val("");
                        });
                    } else {
                        dbApp.log("请选择要更新的记录 ");
                    }
                }
              };
            
            dbApp.init();            
            </script>
        </body>
    
    </html>

                                                                    --老白菜原创

    objccc
  • 相关阅读:
    【转+补充】在OpenCV for Android 2.4.5中使用SURF(nonfree module)
    Delphi StarOffice Framework Beta 1.0 发布
    Angular ngIf相关问题
    angularjs文档下载
    公众号微信支付开发
    公众号第三方平台开发 教程六 代公众号使用JS SDK说明
    公众号第三方平台开发 教程五 代公众号处理消息和事件
    公众号第三方平台开发 教程四 代公众号发起网页授权说明
    公众号第三方平台开发 教程三 微信公众号授权第三方平台
    公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
  • 原文地址:https://www.cnblogs.com/lbczzvv/p/6075292.html
Copyright © 2011-2022 走看看