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
  • 相关阅读:
    MySQL架构优化:定时计划任务与表分区
    关于mysql 删除数据后物理空间未释放(转载)
    Mysql删除数据后磁盘空间未释放的解决办法【转】
    Mysql 自动备份脚本
    迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上)【转载】
    Redis学习笔记(二)-key相关命令【转载】
    干货分享:MySQL之化险为夷的【钻石】抢购风暴【转载】
    Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https【转载】
    业务零影响!如何在Online环境中巧用MySQL传统复制技术【转】
    VNC轻松连接远程Linux桌面
  • 原文地址:https://www.cnblogs.com/lbczzvv/p/6075292.html
Copyright © 2011-2022 走看看