必赢亚洲手机app下载


哪些选拔一台手提式无线电话机和路由让全部办公的人都能上网

366net必赢亚洲手机版回不去的是故乡

读书笔记

一 、HTML4客户端存款和储蓄

B/S架构的运用大批量的新闻存款和储蓄在劳务器端,客户端通过请求响应的主意从服务器获得多少,那样集中储存也会给服务器带来相应的下压力,有个别数据能够直接存款和储蓄在客户端,守旧的Web技术中会使用Cookie,但Cookie有局地缺陷,为了表达那几个毛病大家先看看当提交表单时会有那3个新闻会被浏览器收集后发送到服务器。

1.一 、提交表单发送到服务器的音讯

1)、带name的可用表单成分

2)、url

3)、客户端请求底部音信

4)、cookie

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%
//定义一个cookie对象
Cookie cookie=new     Cookie("color", "blue");
//设置过期时间为365小时,以秒为单位
cookie.setMaxAge(60*60*365);
//添加cookie
response.addCookie(cookie);
 %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
    content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>提交表单测试</title>
</head>
<body>
    <form action="target.do?id=1" method="post">
        <h2>提交表单测试</h2>
        <p>
            名称:<input type="text" name="txtName" id="txtName1" />
        </p>
        <p>
            价格:<input type="text" name="txtPrice" id="txtPrice1" value="888" readonly="readonly"/>
        </p>
        <p>
            数量:<input type="text" name="txtAmount" id="txtAmount1" value="999"  disabled="disabled"/>
        </p>
        <input type="hidden" id="key" value="123445">
        <input type="submit" value="提交" />
    </form>
</body>
</html>

运维结果:

366net必赢亚洲手机版 1

服务器在响应底部中宣称须要客户端浏览器钦命设置cookie
color=blue的做事,且内定了晚点时间,会将cookie信息记录在地头,查看结果如下:

366net必赢亚洲手机版 2

当提交音信给服务器时cookie将征集后归来服务器,同时也会将url、带name可用的表单及请求尾部音信如user-agent等,结果如下:

366net必赢亚洲手机版 3

1.贰 、客户端本地存款和储蓄概要

顾名思义客户端本地存款和储蓄正是将新闻存储在客户端电脑上,cookie正是一种典型的守旧客户端存款和储蓄,长期以来本地存款和储蓄能力一向是桌面应用不同于Web应用的三个首要优势,作为Web应用程序而言,新一代的HTML标准对数据的地点存款和储蓄建议了更高的须求。古板的Web数据存储格局一向来选取的是Cookie,但库克ie有以下缺陷:

a)、cookie会被增大在种种HTTP请求中,所以无形中增添了流量。
b)、由于在HTTP请求中的cookie是明白传递的,所以安全性成难题。
c)、Cookie的轻重限制在4 KB左右,容积达不到供给。

HTML5中的Web
Storage,称为Web本地存款和储蓄,在Web客户端储存数据的效果,用键值对的花样保留数据,曾经属于HTML5的正规化,如今早就被单独出来形成独立的正规类别。本地存款和储蓄优势:

a)、统一的正统,包容性高(IE⑧ 、各大浏览器补助)

b)、数据存款和储蓄量大

c)、无需安装插件

d)、减少网络流量

e)、越发吻合移动端

HTML5 提供了两种在客户端存款和储蓄数据的新章程,即localStorage
、sessionStorage、globalStorage、Web Sql Database。
前边多个适用于储存较少的数额,而Web Sql
Database适用于储存大型的,复杂的多少,笔者习惯把前面包车型地铁多个称呼小存款和储蓄。 IE捌 、Firefox3.⑥ 、Chrome五 、Safari4、Opera10,事实申明各类浏览器在API方面包车型客车落到实处基本上一致,存在必然的包容性难点,但不影响正常使用。

在chrome浏览器中得以应用开发者工具查看到各样不一样的当地存储格局,如下图所示:

366net必赢亚洲手机版 4

Web SQL Database 和 Indexed Database
都以在客户端存款和储蓄大量结构化数据的化解方案。Web SQL Database
完结了价值观的依照 SQL 语句的数据库操作,而 Indexed Database 完结了 NoSQL
的储存情势。

二、localStorage

localStorage:将数据保存在客户端本地的硬件装置(通常指硬盘,但也能够是其他硬件配备)中,尽管浏览器被关闭了,该数量还是存在,下次打开浏览器访问网站时依旧能够继续利用。

2.1、添加

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>localStorage 本地存储</title>
    </head>
    <body>
        <h2>localStorage 本地存储</h2>
        <button onclick="add_click()">添加</button>
        <script type="text/javascript">
            function    add_click()
            {
                //向本地存储中添加一个名为name,值为"手机"的key-value对象
                localStorage.setItem("name","手机");
                //办法2
                localStorage["price"]=999.5;
                //办法3
                localStorage.amount=1788;
            }
        </script>
    </body>
</html>

运作结果:

366net必赢亚洲手机版 5

2.2、取值

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>localStorage 本地存储</title>
    </head>
    <body>
        <h2>localStorage 本地存储</h2>
        <button onclick="add_click()">添加</button>
        <button onclick="get_click()">取值</button>
        <h3 id="msg"></h3>
        <a href="d02.html">d02.html</a>
        <script type="text/javascript">
            var msg=document.getElementById("msg");
            //添加
            function    add_click()
            {
                //向本地存储中添加一个名为name,值为"手机"的key-value对象
                localStorage.setItem("name","手机");
                //办法2
                localStorage["price"]=999.5;
                //办法3
                localStorage.amount=1788;
            }
            //取值
            function get_click()
            {
                msg.innerHTML+=localStorage.getItem("name")+"<br/>";
                msg.innerHTML+=localStorage["price"]+"<br/>";
                msg.innerHTML+=localStorage.amount+"<br/>";
            }
        </script>
    </body>
</html>

 运转结果:

366net必赢亚洲手机版 6

2.3、修改

            //修改
            function update_click()
            {
                //如果不存在就添加,如果存在就修改
                localStorage.setItem("name","iPhone 8 plus手机");
                //修改办法2
                localStorage["price"]=899.5;
                //修改办法3
                localStorage.amount=100;
            }

 运营结果:

366net必赢亚洲手机版 7

2.4、删除

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>localStorage 本地存储</title>
    </head>
    <body>
        <h2>localStorage 本地存储</h2>
        <button onclick="add_click()">添加</button>
        <button onclick="get_click()">取值</button>
        <button onclick="update_click()">修改</button>
        <button onclick="delete_click()">删除</button>
        <h3 id="msg"></h3>
        <a href="d02.html">d02.html</a>
        <script type="text/javascript">
            var msg=document.getElementById("msg");
            //添加
            function    add_click()
            {
                //向本地存储中添加一个名为name,值为"手机"的key-value对象
                localStorage.setItem("name","手机");
                //添加办法2
                localStorage["price"]=999.5;
                //添加办法3
                localStorage.amount=1788;
            }
            //取值
            function get_click()
            {
                msg.innerHTML+=localStorage.getItem("name")+"<br/>";
                msg.innerHTML+=localStorage["price"]+"<br/>";
                msg.innerHTML+=localStorage.amount+"<br/>";
            }
            //修改
            function update_click()
            {
                //如果不存在就添加,如果存在就修改
                localStorage.setItem("name","iPhone 8 plus手机");
                //修改办法2
                localStorage["price"]=899.5;
                //修改办法3
                localStorage.amount=100;
            }
            //删除
            function delete_click()
            {
               //根据键删除
               //localStorage.removeItem("price");
               //删除所有
               localStorage.clear();
            }
        </script>
    </body>
</html>

 运维结果:

366net必赢亚洲手机版 8

2.伍 、跨页面与跨域

当关闭浏览器,下次再打开时,值仍旧存在。能够跨页面,无法跨域。大家在d01页面中添加了值,在d02页面中还是能够访问,在全方位同域下都能够访问。

366net必赢亚洲手机版 9

2.⑥ 、存款和储蓄地方与SQLite

localStorage与cookie不平等,它存款和储蓄在三个数据库文件中,默许地点在:C:\Users\Administrator\366net必赢亚洲手机版,AppData\Local\Google\Chrome\User
Data\Default\databases\http_localhost_*

366net必赢亚洲手机版 10

应用SQLite数据库管理工科具,打开后见到的结果,那里以taobao存款和储蓄客户端的localStorage为例:

366net必赢亚洲手机版 11

提示:SQLite,是一款轻型的免费开源的数据库,是服从ACID的关系型数据库管理类别,它富含在3个相对小的C库中。它是D.RichardHipp建立的国有领域项目。它的筹划指标是嵌入式的,而且最近已经在不可胜言嵌入式产品中动用了它,它占用财富非常的低,在嵌入式设备中,大概只须求几百K的内部存款和储蓄器就够了。它能够援助Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如
Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL那四款开源的社会风气知名数据库管理体系来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于三千年3月。
至贰零壹伍年一度有17个年头,SQLite也迎来了三个版本 SQLite 3已经公布。

SQLiteSpy管理工科具下载:http://pan.baidu.com/s/1i5JQtBf

2.⑦ 、用途、演习与包容性

具有要求将少量(不超过4M)数据存款和储蓄在客户端的必要都适用,如密码,用户偏好(profile)等

366net必赢亚洲手机版 12

登录成功后记录用户访问次数。

在IE第88中学测试通过

366net必赢亚洲手机版 13

Firefox测试通过

366net必赢亚洲手机版 14

三、sessionStorage

将数据一时半刻保存在客户端session对象中。session对象便是会话对象,session中储存的数码独立于各种客户,该数额会随着浏览器的关闭而消逝。

sessionStorage的操作api与localStorage基本一致,在不手动清除的意况下localStorage永久保存,而sessionStorage只是一时半刻暂存。

3.1、sessionStorage使用

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>sessionStorage 本地存储</title>
    </head>
    <body>
        <h2>sessionStorage 本地存储</h2>
        <button onclick="add_click()">添加</button>
        <button onclick="get_click()">取值</button>
        <button onclick="update_click()">修改</button>
        <button onclick="delete_click()">删除</button>
        <h3 id="msg"></h3>
        <a href="d04.html">d04.html</a>
        <script type="text/javascript">
            var msg=document.getElementById("msg");
            //添加
            function    add_click()
            {
                //向本地存储中添加一个名为name,值为"手机"的key-value对象
                sessionStorage.setItem("name","手机");
                //添加办法2
                sessionStorage["price"]=999.5;
                //添加办法3
                sessionStorage.amount=1788;
            }
            //取值
            function get_click()
            {
                msg.innerHTML+=sessionStorage.getItem("name")+"<br/>";
                msg.innerHTML+=sessionStorage["price"]+"<br/>";
                msg.innerHTML+=sessionStorage.amount+"<br/>";
            }
            //修改
            function update_click()
            {
                //如果不存在就添加,如果存在就修改
                sessionStorage.setItem("name","iPhone 8 plus手机");
                //修改办法2
                sessionStorage["price"]=899.5;
                //修改办法3
                sessionStorage.amount=100;
            }
            //删除
            function delete_click()
            {
               //根据键删除
               //sessionStorage.removeItem("price");
               //删除所有
               sessionStorage.clear();
            }
        </script>
    </body>
</html>

运营结果:

366net必赢亚洲手机版 15

能够完结在页面间传值,比如能够一时半刻存款和储蓄用户消息。

3.② 、Web本地存款和储蓄事件监听 

当程序修改localStorage与sessionStorage时将触及全局事件。

当setItem(),removeItem()可能clear()
方法被调用,并且数据真的发生了变更时,就会触发storage事件,假诺急需开展监听数据处理,通过以下措施:
window.addEventListener(event,handleEvent, capture)
event:设置成storage
handle伊芙nt:事件处理函数
capture:事件处理顺序,一般设置成false,表示采取冒泡格局处理

handle伊芙nt处总管件的函数会接收到二个Storage伊芙nt对象,该对象有以下属性:
key:被修改的键。
oldValue:修改前的值(假使是增多新的键值,则该属性为null)
newValue:修改后的值(假如是剔除键值,则该属性为null)
url/uri:触发当前囤积事件的页面的url

瞩目:storage改变的时候,触发那些事件会调用全数同域下任何窗口的storage事件,可是它本人触发storage即当前窗口是不会触发这一个事件的(当然ie这些特例除却,它富含自身本事也会触发storage事件)

 修改d02页面,监听值的转变。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>获得localStorage的值</title>
    </head>
    <body>
        <script type="text/javascript">
            console.log(localStorage.price);

            window.addEventListener("storage",function(obj){
                alert(obj.oldValue+","+obj.newValue+","+obj.url);
            },true);
        </script>
    </body>
</html>

运行结果如下:

366net必赢亚洲手机版 16

3.3、cookie、sessionStorage、localStorage比较

 366net必赢亚洲手机版 17

366net必赢亚洲手机版 18

四、Web SQL Database 

Web SQL Database 引入了一套使用 SQL 来控制客户端数据库(client-side
database)的 API,这一个 API 是异步的(asynchronous),规范中所使用的 SQL
语言为 SQLite。Web SQL Database API 实际上未包蕴在 HTML 5
规范内部,它是一个独门的规范,它引入了一套使用 SQL 操作客户端数据库的
API,这几个 API 有同步的,也有异步的, 同步版本的 API 只在办事线程(Worker
Threads)上有用,由于并不是富有的浏览器都协助理工科程师作线程,一般情况下,都会选择异步
API。兼容情状如下:

366net必赢亚洲手机版 19

 

 

Web SQL
Database能够让开发人士使用SQL语句操作客户端浏览器中放到的SQLite数据库
,给开发职员提供了有利于。对于简易的多少,使用sessionStorage和localStorage可以很好地实现存取,不过对于拍卖盘根错节的关系型数据,它就无法了。那也是
HTML 5 的“Web SQLDatabase”API
接口的选拔所在。作者把它精晓成3个Html5条件下能够用Js执行CRUD的Web数据库

三个主导措施
openDatabase:那几个办法应用现有数据库或创办新数据库创建数据库对象。
transaction:这些措施允许大家依照气象决定工作提交或回滚。
executeSql:那几个方法用于实践实际的SQL查询。

366net必赢亚洲手机版 20

4.一 、创制数据库

行使openDatabase创制或打开数据库,若是存在就开辟,假设不存在就创办,语法如下:

openDatabase(a,b,c,d,e);

a).数据库名称。
b).版本号 目前为1.0
c).对数据库的描述
d).设置数据的大小,以Byte为单位
e).回调函数(可回顾)

<!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>
        <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 db;

          //创建名称为products,版本为1.0,描述为产品数据库,3M大小的数据库
          db=openDatabase("products",1.0,"产品数据库",1024*1024*3,function(){
              log("创建或打开数据库完成");
          });

          //显示消息
          function log(info){
              $("#msg")[0].innerHTML+=info+"<br/>";
          }
        </script>
    </body>
</html>

运作结果:

366net必赢亚洲手机版 21

4.2、创建表

实施全体的SQL语句都将动用到transaction、executeSql三个点子,基本语法格式如下:

            数据库对象.transaction(function(tx) {
                tx.executeSql(
                    "要执行的sql", [参数],
                    function(tx, result) {
                        alert('成功时的回调方法');
                    },
                    function(tx, error) {
                        alert('失败时的回调方法' + error.message);
                    });
            });

页面脚本如下:

<!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 onclick="createTable()">创建表</button>
        </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">
            //创建或打开名称为products,版本为1.0,描述为产品数据库,3M大小的数据库
            var db = openDatabase("products", 1.0, "产品数据库", 1024 * 1024 * 3, function() {
                log("创建数据库完成");
            });

            //创建表
            function createTable() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "create table if not exists goods(id integer primary key autoincrement,name text not null,price double)", [],
                        function(tx, result) {
                            log('创建表成功');
                        },
                        function(tx, error) {
                            log('创建表失败' + error.message);
                        });
                });
            }

            //显示消息
            function log(info) {
                $("#msg")[0].innerHTML += info + "<br/>";
            }
        </script>
    </body>

</html>

运维结果:

366net必赢亚洲手机版 22

当创造成功时,能够发今后出现了多少个表,当中名为sqlite_sequence为电动增加用的行列。

4.③ 、添加数据

页面脚本如下:

<!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 onclick="createTable()">创建表</button>

            <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>
                    <button onclick="insert()">添加</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">
            //创建名称为products,版本为1.0,描述为产品数据库,3M大小的数据库
            var db = openDatabase("products", 1.0, "产品数据库", 1024 * 1024 * 3, function() {
                log("创建或打开数据库完成");
            });

            //创建表
            function createTable() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "create table if not exists goods(id integer primary key autoincrement,name text not null,price double)", [],
                        function(tx, result) {
                            log('创建表成功');
                        },
                        function(tx, error) {
                            log('创建表失败' + error.message);
                        });
                });
            }

            //插入数据
            function insert() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "insert into goods(name,price) values(?,?)", 
                        [$("#name").val(),$("#price").val()],
                        function(tx, result) {
                            log('添加数据成功');
                        },
                        function(tx, error) {
                            log('添加数据失败' + error.message);
                        });
                });
            }



            //显示消息
            function log(info) {
                $("#msg")[0].innerHTML += info + "<br/>";
            }
        </script>
    </body>

</html>

运作结果:

366net必赢亚洲手机版 23

4.④ 、突显数据

页面脚本如下:

<!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 onclick="createTable()">创建表</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>
                    <button onclick="insert()">添加</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">
            //创建名称为products,版本为1.0,描述为产品数据库,3M大小的数据库
            var db = openDatabase("products", 1.0, "产品数据库", 1024 * 1024 * 3, function() {
                log("创建或打开数据库完成");
            });

            //展示,加载数据
            function select()
            {
                //将表格中tr索引大于0的元素删除
                $("#tabGoods tr:gt(0)").remove();
                db.transaction(function(tx) {
                    tx.executeSql(
                        "select id,name,price from goods", [],
                        function(tx, result) {

                            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='del("+result.rows.item(i)["id"]+")' >删除</a>")
                                $("<td/>").append(del).appendTo(tr);

                                tr.appendTo("#tabGoods");
                            }

                        },
                        function(tx, error) {
                            log('创建表失败' + error.message);
                        });
                });
            }
            select();

            //创建表
            function createTable() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "create table if not exists goods(id integer primary key autoincrement,name text not null,price double)", [],
                        function(tx, result) {
                            log('创建表成功');
                        },
                        function(tx, error) {
                            log('创建表失败' + error.message);
                        });
                });
            }

            //插入数据
            function insert() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "insert into goods(name,price) values(?,?)", 
                        [$("#name").val(),$("#price").val()],
                        function(tx, result) {
                            log('添加数据成功');
                            select();
                        },
                        function(tx, error) {
                            log('添加数据失败' + error.message);
                        });
                });
            }



            //显示消息
            function log(info) {
                $("#msg")[0].innerHTML += info + "<br/>";
            }
        </script>
    </body>

</html>

运转结果如下:

366net必赢亚洲手机版 24

4.⑤ 、编辑数据

页面脚本如下:

<!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 onclick="createTable()">创建表</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 onclick="insert()">添加</button>
                    <button onclick="update()">更新</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">
            //创建名称为products,版本为1.0,描述为产品数据库,3M大小的数据库
            var db = openDatabase("products", 1.0, "产品数据库", 1024 * 1024 * 3, function() {
                log("创建或打开数据库完成");
            });

            //展示,加载数据
            function select() {
                //将表格中tr索引大于0的元素删除
                $("#tabGoods tr:gt(0)").remove();
                db.transaction(function(tx) {
                    tx.executeSql(
                        "select id,name,price from goods", [],
                        function(tx, result) {

                            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='del(" + result.rows.item(i)["id"] + ",this)' >删除 | </a>")
                                var edit = $("<a href='#' onclick='edit(" + result.rows.item(i)["id"] + ",this)' >修改</a>")
                                $("<td/>").append(del).append(edit).appendTo(tr);

                                tr.appendTo("#tabGoods");
                            }

                        },
                        function(tx, error) {
                            log('创建表失败' + error.message);
                        });
                });
            }
            select();

            //创建表
            function createTable() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "create table if not exists goods(id integer primary key autoincrement,name text not null,price double)", [],
                        function(tx, result) {
                            log('创建表成功');
                        },
                        function(tx, error) {
                            log('创建表失败' + error.message);
                        });
                });
            }

            //插入数据
            function insert() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "insert into goods(name,price) values(?,?)", [$("#name").val(), $("#price").val()],
                        function(tx, result) {
                            log('添加数据成功');
                            select();
                        },
                        function(tx, error) {
                            log('添加数据失败' + error.message);
                        });
                });
            }

            //删除 
            function del(id, link) {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "delete from goods where id=?", [id],
                        function(tx, result) {
                            log('删除成功');
                            //查找a标签最近的一个tr父元素,移除
                            $(link).closest("tr").remove();
                        },
                        function(tx, error) {
                            log('删除失败' + error.message);
                        });
                });
            }

            //编辑
            function edit(id) {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "select id,name,price from goods where id=?", [id],
                        function(tx, result) {
                            $("#name").val(result.rows.item(0)["name"]);
                            $("#price").val(result.rows.item(0)["price"]);
                            $("#goodsId").val(result.rows.item(0)["id"]);
                            log("修改后请保存");
                        },
                        function(tx, error) {
                            log('编辑失败' + error.message);
                        });
                });
            }

            //更新
            function update() {
                if($("#goodsId").val()) {
                    db.transaction(function(tx) {
                        tx.executeSql(
                            "update goods set name=?,price=?  where id=?", [$("#name").val(), $("#price").val(), $("#goodsId").val()],
                            function(tx, result) {
                                log('更新成功');
                                select();
                                $("#goodsId").val("");
                            },
                            function(tx, error) {
                                log('更新失败' + error.message);
                            });
                    });
                } else {
                    log("请选择要更新的记录 ");
                }
            }

            //显示消息
            function log(info) {
                $("#msg")[0].innerHTML += info + "<br/>";
            }
        </script>
    </body>

</html>

运作结果如下:

366net必赢亚洲手机版 25

366net必赢亚洲手机版 26

4.陆 、删除数据

<!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 onclick="createTable()">创建表</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>
                    <button onclick="insert()">添加</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">
            //创建名称为products,版本为1.0,描述为产品数据库,3M大小的数据库
            var db = openDatabase("products", 1.0, "产品数据库", 1024 * 1024 * 3, function() {
                log("创建或打开数据库完成");
            });

            //展示,加载数据
            function select()
            {
                //将表格中tr索引大于0的元素删除
                $("#tabGoods tr:gt(0)").remove();
                db.transaction(function(tx) {
                    tx.executeSql(
                        "select id,name,price from goods", [],
                        function(tx, result) {

                            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='del("+result.rows.item(i)["id"]+",this)' >删除</a>")
                                $("<td/>").append(del).appendTo(tr);

                                tr.appendTo("#tabGoods");
                            }

                        },
                        function(tx, error) {
                            log('创建表失败' + error.message);
                        });
                });
            }
            select();

            //创建表
            function createTable() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "create table if not exists goods(id integer primary key autoincrement,name text not null,price double)", [],
                        function(tx, result) {
                            log('创建表成功');
                        },
                        function(tx, error) {
                            log('创建表失败' + error.message);
                        });
                });
            }

            //插入数据
            function insert() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "insert into goods(name,price) values(?,?)", 
                        [$("#name").val(),$("#price").val()],
                        function(tx, result) {
                            log('添加数据成功');
                            select();
                        },
                        function(tx, error) {
                            log('添加数据失败' + error.message);
                        });
                });
            }

            //删除 
            function del(id,link) {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "delete from goods where id=?", 
                        [id],
                        function(tx, result) {
                            log('删除成功');
                            //查找a标签最近的一个tr父元素,移除
                            $(link).closest("tr").remove();
                        },
                        function(tx, error) {
                            log('删除失败' + error.message);
                        });
                });
            }
            //显示消息
            function log(info) {
                $("#msg")[0].innerHTML += info + "<br/>";
            }
        </script>
    </body>

</html>

运作结果:

366net必赢亚洲手机版 27

4.7、删除表

删除表

            //创建表
            function dropTable() {
                db.transaction(function(tx) {
                    tx.executeSql(
                        "drop table IF EXISTS goods", [],
                        function(tx, result) {
                            log('删除表成功');
                        },
                        function(tx, error) {
                            log('删除表失败' + error.message);
                        });
                });
            }

运转结果:

366net必赢亚洲手机版 28

4.⑧ 、数据库地方

D:\Users\Administrator\AppData\Local\Google\Chrome\User
Data\Default\databases

366net必赢亚洲手机版 29

4.9、封装JavaScript

后边的示范中javascript方法都一贯暴光在window下,有只怕与其他js争辨,能够展开简易封装。

简易对象封装示例:

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

 

运作结果:2 

首先次封装后的代码,在整整window对象中只暴光dbApp对象,代码如下:

<!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/>";
            },
            //创建表
            createTable:function() {
                this.db.transaction(function(tx) {
                    tx.executeSql(
                        "create table IF not EXISTS goods(id integer primary key autoincrement,name text not null,price double)", [],
                        function(tx, result) {
                            this.log('创建表成功');
                        },
                        function(tx, error) {
                            this.log('创建表失败' + error.message);
                        });
                });
            },
            //删除表
            dropTable:function() {
                this.db.transaction(function(tx) {
                    tx.executeSql(
                        "drop table IF EXISTS goods", [],
                        function(tx, result) {
                            this.log('删除表成功');
                        },
                        function(tx, error) {
                            this.log('删除表失败' + error.message);
                        });
                });
            },
            //展示,加载数据
            select:function() {
                //将表格中tr索引大于0的元素删除
                $("#tabGoods tr:gt(0)").remove();
                this.db.transaction(function(tx) {
                    tx.executeSql(
                        "select id,name,price from goods", [],
                        function(tx, result) {

                            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");
                            }

                        },
                        function(tx, error) {
                            this.log('创建表失败' + error.message);
                        });
                });
            },
            //插入数据
            insert:function() {
                //如果insert方法被绑定为事件,则this表示事件发生的对象
                dbApp.db.transaction(function(tx) {
                    tx.executeSql(
                        "insert into goods(name,price) values(?,?)", [$("#name").val(), $("#price").val()],
                        function(tx, result) {
                            dbApp.log('添加数据成功');
                            //刷新
                            dbApp.select();
                        },
                        function(tx, error) {
                            dbApp.log('添加数据失败' + error.message);
                        });
                });
            },
            //删除 
            del:function(id, link) {
                dbApp.db.transaction(function(tx) {
                    tx.executeSql(
                        "delete from goods where id=?", [id],
                        function(tx, result) {
                            dbApp.log('删除成功');
                            //查找a标签最近的一个tr父元素,移除
                            $(link).closest("tr").remove();
                        },
                        function(tx, error) {
                            dbApp.log('删除失败' + error.message);
                        });
                });
            },
            //编辑
            edit:function(id) {
                dbApp.db.transaction(function(tx) {
                    tx.executeSql(
                        "select id,name,price from goods where id=?", [id],
                        function(tx, result) {
                            $("#name").val(result.rows.item(0)["name"]);
                            $("#price").val(result.rows.item(0)["price"]);
                            $("#goodsId").val(result.rows.item(0)["id"]);
                            dbApp.log("修改后请保存");
                        },
                        function(tx, error) {
                            dbApp.log('编辑失败' + error.message);
                        });
                });
            },
            //更新
            update:function() {
                if($("#goodsId").val()) {
                    dbApp.db.transaction(function(tx) {
                        tx.executeSql(
                            "update goods set name=?,price=?  where id=?", [$("#name").val(), $("#price").val(), $("#goodsId").val()],
                            function(tx, result) {
                                dbApp.log('更新成功');
                                dbApp.select();
                                $("#goodsId").val("");
                            },
                            function(tx, error) {
                                dbApp.log('更新失败' + error.message);
                            });
                    });
                } else {
                    dbApp.log("请选择要更新的记录 ");
                }
            }
          };

        dbApp.init();            
        </script>
    </body>

</html>

运营结果:

366net必赢亚洲手机版 30

从上面包车型地铁代码能够发现操作数据库,执行sql的主意存在大气的冗余,能够优化,优化后的代码如下:

<!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>

运作结果:

366net必赢亚洲手机版 31

4.十 、美化页面

在原页面的底子上扩展css样式,添加样式后的页面脚本如下:

<!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" />
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
                font-family: "microsoft yahei";
            }
            #container{
                padding: 10px;
                font-size: 14px;
            }
            #container a{
                color: #fff;
                text-decoration: none;
                margin-right: 5px;
            }
            #container a:hover{
                color:orangered;
            }
            button,a{
                border: 0;
                height: 22px;
                line-height: 22px;
                border-radius: 3px;
                padding:0 10px;
                background: dodgerblue;
                color: white;
            }
            button:hover{
                background: orangered;
            }
            #container h2{
                height: 60px;
            }
            html #tabGoods{
                width:100%;
                margin: 15px 0;
                border: 2px solid #0062CC;
            }
            #tabGoods,#tabGoods td,#tabGoods th
            {
                border: 1px solid #0062CC;
                border-collapse: collapse;
            }
            #tabGoods td,#tabGoods th{
                padding: 5px 0 5px 5px;
            }
            #fieldsetForm{
                width: 400px;
                padding: 10px;
                border-radius: 10px;
                border: 2px solid #0062CC;
            }
            #fieldsetForm p{
                padding: 10px;
            }
            #msg{
                font-size: 16px;
                font-weight: normal;
                height: 100px;
                overflow: auto;
                margin-top: 10px;
            }
        </style>
    </head>

    <body>
        <div id="container">
            <h2>Web SQL Database</h2>
            <button id="btnCreateTable">创建表</button>
            <button id="btnDropTable">删除表</button>
            <table id="tabGoods">
                <tr>
                    <th>编号</th>
                    <th>名称</th>
                    <th>价格</th>
                    <th>删除</th>
                </tr>
            </table>
            <fieldset id="fieldsetForm">
                <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>
            <h2 id="msg"></h2>
        </div>
        <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>

运行结果:

366net必赢亚洲手机版 32

五 、移动端打包与运作

5.一 、在大哥伦比亚大学端直接待上访问Web站点

将手提式有线电话机与总结机一连到同1个网段,比如能够运用wifi

翻看本机ip地址,有时供给将本地连接禁止使用,查看ip地址的授命是ipconfig

在手提式有线电话机端使用浏览器查看结果如下:

366net必赢亚洲手机版 33

5.贰 、打包成app安装运营

那边运用HBuilder打包成apk的安装包,安装打包结果如下:

366net必赢亚洲手机版 34

366net必赢亚洲手机版 35

5.三 、套用移动端UI框架

那边运用HBuilder内置的MUI为例,新增d06.html,页面脚本如下:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>淘水果</title>
        <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <!--标准mui.css-->
        <link rel="stylesheet" href="css/mui.min.css">
        <!--App自定义的css-->
        <link rel="stylesheet" type="text/css" href="css/app.css" />
        <style>
            .title {
                margin: 20px 15px 10px;
                color: #6d6d72;
                font-size: 15px;
            }

            .oa-contact-cell.mui-table .mui-table-cell {
                padding: 11px 0;
                vertical-align: middle;
            }

            .oa-contact-cell {
                position: relative;
                margin: -11px 0;
            }

            .oa-contact-avatar {
                width: 75px;
            }

            .oa-contact-avatar img {
                border-radius: 50%;
            }

            .oa-contact-content {
                width: 100%;
            }

            .oa-contact-name {
                margin-right: 20px;
            }

            .oa-contact-name,
            oa-contact-position {
                float: left;
            }
        </style>
    </head>

    <body>
        <header class="mui-bar mui-bar-nav">
            <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
            <h1 class="mui-title">淘水果</h1>
        </header>
        <nav class="mui-bar mui-bar-tab">
            <a class="mui-tab-item mui-active" href="#tabbar">

                畅销水果
            </a>
            <a class="mui-tab-item" href="#tabbar-with-chat">
                9
                新货上架
            </a>
            <a class="mui-tab-item" href="#tabbar-with-contact">

                收款
            </a>
            <a class="mui-tab-item" href="#tabbar-with-map">

                发货
            </a>
        </nav>
        <div class="mui-content">
            <div id="tabbar" class="mui-control-content mui-active">

                <div id="slider" class="mui-slider">
                    <div class="mui-slider-group mui-slider-lhttp://127.0.0.1:8020/HTML5_2_1/d06.html#oop">
                        <!-- 额外增加的一个节点(循环轮播:第一个节点是最后一张轮播) -->
                        <div class="mui-slider-item mui-slider-item-duplicate">
                            <a href="#">
                                <img src="images/yuantiao.jpg">
                            </a>
                        </div>
                        <!-- 第一张 -->
                        <div class="mui-slider-item">
                            <a href="#">
                                <img src="images/shuijiao.jpg">
                            </a>
                        </div>
                        <!-- 第二张 -->
                        <div class="mui-slider-item">
                            <a href="#">
                                <img src="images/muwu.jpg">
                            </a>
                        </div>
                        <!-- 第三张 -->
                        <div class="mui-slider-item">
                            <a href="#">
                                <img src="images/cbd.jpg">
                            </a>
                        </div>
                        <!-- 第四张 -->
                        <div class="mui-slider-item">
                            <a href="#">
                                <img src="images/yuantiao.jpg">
                            </a>
                        </div>
                        <!-- 额外增加的一个节点(循环轮播:最后一个节点是第一张轮播) -->
                        <div class="mui-slider-item mui-slider-item-duplicate">
                            <a href="#">
                                <img src="images/shuijiao.jpg">
                            </a>
                        </div>
                    </div>
                    <div class="mui-slider-indicator">
                        <div class="mui-indicator mui-active"></div>
                        <div class="mui-indicator"></div>
                        <div class="mui-indicator"></div>
                        <div class="mui-indicator"></div>
                    </div>
                </div>

                <ul class="mui-table-view mui-table-view-chevron" id="goodsList">

                </ul>

            </div>

            <div id="tabbar-with-chat" class="mui-control-content">
                <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>
            </div>
            <div id="tabbar-with-contact" class="mui-control-content">
                <div class="title">这是div模式选项卡中的第3个子页面,该页面展示一个通讯录示例.</div>
                <ul class="mui-table-view mui-table-view-striped mui-table-view-condensed">
                    <li class="mui-table-view-cell">
                        <div class="mui-slider-cell">
                            <div class="oa-contact-cell mui-table">
                                <div class="oa-contact-avatar mui-table-cell">
                                    <img src="images/60x60.gif" />
                                </div>
                                <div class="oa-contact-content mui-table-cell">
                                    <div class="mui-clearfix">
                                        <h4 class="oa-contact-name">叶文洁</h4>
                                        董事长
                                    </div>
                                    <p class="oa-contact-email mui-h6">
                                        yewenjie@sina.com
                                    </p>
                                </div>
                            </div>
                        </div>
                    </li>
                    <li class="mui-table-view-cell">
                        <div class="mui-slider-cell">
                            <div class="oa-contact-cell mui-table">
                                <div class="oa-contact-avatar mui-table-cell">
                                    <img src="images/60x60.gif" />
                                </div>
                                <div class="oa-contact-content mui-table-cell">
                                    <div class="mui-clearfix">
                                        <h4 class="oa-contact-name">艾AA</h4>
                                        总经理
                                    </div>
                                    <p class="oa-contact-email mui-h6">
                                        aaa@163.com
                                    </p>
                                </div>
                            </div>
                        </div>
                    </li>
                    <li class="mui-table-view-cell">
                        <div class="mui-slider-cell">
                            <div class="oa-contact-cell mui-table">
                                <div class="oa-contact-avatar mui-table-cell">
                                    <img src="images/60x60.gif" />
                                </div>
                                <div class="oa-contact-content mui-table-cell">
                                    <div class="mui-clearfix">
                                        <h4 class="oa-contact-name">罗辑</h4>
                                        员工
                                    </div>
                                    <p class="oa-contact-email mui-h6">
                                        luoji@126.com
                                    </p>
                                </div>
                            </div>
                        </div>
                    </li>
                    <li class="mui-table-view-cell">
                        <div class="mui-slider-cell">
                            <div class="oa-contact-cell mui-table">
                                <div class="oa-contact-avatar mui-table-cell">
                                    <img src="images/60x60.gif" />
                                </div>
                                <div class="oa-contact-content mui-table-cell">
                                    <div class="mui-clearfix">
                                        <h4 class="oa-contact-name">云天明</h4>
                                        员工
                                    </div>
                                    <p class="oa-contact-email mui-h6">
                                        ytm@163.com
                                    </p>
                                </div>
                            </div>
                        </div>
                    </li>
                    <li class="mui-table-view-cell">
                        <div class="mui-slider-cell">
                            <div class="oa-contact-cell mui-table">
                                <div class="oa-contact-avatar mui-table-cell">
                                    <img src="images/60x60.gif" />
                                </div>
                                <div class="oa-contact-content mui-table-cell">
                                    <div class="mui-clearfix">
                                        <h4 class="oa-contact-name">史强</h4>
                                        员工
                                    </div>
                                    <p class="oa-contact-email mui-h6">
                                        shiqiang@gmail.com
                                    </p>
                                </div>
                            </div>
                        </div>
                    </li>
                </ul>
            </div>
            <div id="tabbar-with-map" class="mui-control-content">
                <div class="title">这是div模式选项卡中的第4个子页面,该页面展示一个常见的设置示例.</div>
                <ul class="mui-table-view">
                    <li class="mui-table-view-cell">
                        <a class="mui-navigate-right">
                            新消息通知
                        </a>
                    </li>
                    <li class="mui-table-view-cell">
                        <a class="mui-navigate-right">
                            隐私
                        </a>
                    </li>
                    <li class="mui-table-view-cell">
                        <a class="mui-navigate-right">
                            通用
                        </a>
                    </li>
                </ul>
                <ul class="mui-table-view" style="margin-top: 25px;">
                    <li class="mui-table-view-cell">
                        <a class="mui-navigate-right">
                            关于mui
                        </a>
                    </li>
                </ul>
                <ul class="mui-table-view" style="margin-top: 25px;">
                    <li class="mui-table-view-cell">
                        <a style="text-align: center;color: #FF3B30;">
                            退出登录
                        </a>
                    </li>
                </ul>
            </div>
        </div>
    </body>
    <script src="js/jquery-1.11.3.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/mui.min.js"></script>
    <script>
        //定义当前应用的对象
        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) {
                mui.toast(info);
            },
            //执行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的元素删除
                    $("#goodsList li").remove();
                    for(var i = 0; i < result.rows.length; i++) {
                        var tr = $("<li class='mui-table-view-cell mui-media'><a class='mui-navigate-right'><img class='mui-media-object mui-pull-left' src='images/cbd.jpg'><div class='mui-media-body'>" + result.rows.item(i)["name"] + "<p class='mui-ellipsis'>新鲜好吃的水果,仅售:" + result.rows.item(i)["price"] + "/斤</p></div></a></li>")
                        tr.appendTo("#goodsList");
                    }
                    mui.init({
                        swipeBack: true //启用右滑关闭功能
                    });
                });
            },
            //插入数据
            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>

</html>

装进运维后的结果如下:

366net必赢亚洲手机版 36

⑥ 、示例下载

github:https://github.com/zhangguo5/HTML5_2_1

打包下载

参照:http://www.cnblogs.com/best

366net必赢亚洲手机版 37

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图