zoukankan      html  css  js  c++  java
  • 用HTML5本地数据库制作联系人

    <!DOCTYPE HTML>
    <html lang="en-US">
    <head>
    <meta charset="UTF-8">
    <title>用HTML5本地数据库制作联系人</title>
    <style type="text/css">
    /*
        -----CSS Docuemnt-----
        Version: 1.0
         Author: kingwell
          Email: jinhua.leng#gmail.com
           Date: 2012-5-16
    
        Global Style  Careful Modification
    -----Copyright (c) 2012, xxxx Inc.  All rights reserved. V1.2-----
    
        -----base.css
    */
    
    /*-- Reset Start --*/
    body{background:#FAFAFA; color:#333; font: normal normal normal 12px/1.5 Arial, Helvetica, sans-serif; margin:0; padding:0;}
    a,abbr,acronym,address,applet,article,b,big,blockquote,button,canvas,caption,center,cite,code,dd,del,dfn,div,dl,dt,em,embed,fieldset,font,form,h1,h2,h3,h4,h5,h6,hr,html,nav,i,iframe,img,ins,input,kbd,label,legend,li,menu,object,ol,p,pre,q,s,samp,small,span,section,strike,strong,sub,sup,table,textarea,tbody,td,tfoot,th,thead,tr,tt,u,ul,var{margin:0;padding:0;}
    table{border-collapse:collapse; border-spacing:0}
    fieldset,img{border:none}
    q:before,q:after{content:''}
    h1,h2,h3,h4,h5,h6{font-size:100%; font-weight:normal}
    li{list-style:none}ol{padding-left:20px}ol li{list-style-type:decimal;}
    sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}strong{font-weight:bold;}
    caption,th{text-align:left}
    
    .clear-float,.cf{clear:both; line-height:0; height:0; overflow:hidden}
    .cl{clear:left}.cr{clear:right;}
    ::selection{background:orange; color:white}
    .clearAfter:after{clear:both; content:"."; display:block; visibility:hidden; height:0; line-height:0}
    input,textarea,select,button{font-family:Arial; font-size:12px; outline:none}
    
    a{text-decoration:none; color:#333}
    a:link{}
    a:visited{}
    a:hover{text-decoration:underline; color:#333}
    a:active{}
    /*-- Reset End--*/
    
    
    /*-- Border --*/
    .bn{border:none!important}
    .bln{border-left:none}
    .brn{border-right:none}
    .btn{border-top:none}
    .bbn{border-bottom:none}
    
    .bgn{background:none!important}
    .bgcn{background-color:transparent!important}
    .bgin{background-image:none!important}
    
    /*-- Float --*/
    .fl{float:left; _display:inline}
    .fr{float:right; _display:inline}
    .fn{float:none}
    
    /* Position */
    .relative{position:relative}
    .absolute{position:absolute}
    .fixed{position:fixed}
    .static{position:static}
    .r0{right:0}
    .r1{right:1px}
    .r2{right:2px}
    .r3{right:3px}
    .r4{right:4px}
    .r5{right:5px}
    
    .t0{top:0}
    .t1{top:1px}
    .t2{top:2px}
    .t3{top:3px}
    .t4{top:4px}
    .t5{top:5px}
    .t6{top:6px}
    .t7{top:7px}
    .t8{top:8px}
    .t9{top:9px}
    .t10{top:10px}
    
    .r0{right:0}
    .r1{right:1px}
    .r2{right:2px}
    .r3{right:3px}
    .r4{right:4px}
    .r5{right:5px}
    .r6{right:6px}
    .r7{right:7px}
    .r8{right:8px}
    .r9{right:9px}
    .10{right:10px}
    
    .b0{bottom:0}
    .b1{bottom:1px}
    .b2{bottom:2px}
    .b3{bottom:3px}
    .b4{bottom:4px}
    .b5{bottom:5px}
    .b6{bottom:6px}
    .b7{bottom:7px}
    .b8{bottom:8px}
    .b9{bottom:9px}
    .10{bottom:10px}
    
    .l0{left:0}
    .l1{left:1px}
    .l2{left:2px}
    .l3{left:3px}
    .l4{left:4px}
    .l5{left:5px}
    .l6{left:6px}
    .l7{left:7px}
    .l8{left:8px}
    .l9{left:9px}
    .110{left:10px}
    
    
    
    /*-- Display --*/
    .none,.n{display:none}
    .b,.block,.show{display:block}
    .dib,.ib{display:inline-block; *display:inline; *zoom:1}
    .dil,.il{display:inline}
    .h{overflow:hidden}
    .v{overflow:visible}
    
    /* align*/
    .ac,.center{text-align:center}
    .al{text-align:left}
    .ar{text-align:right}
    .vm{vertical-align:middle}
    .vt{vertical-align:top}
    .vb{vertical-align:bottom}
    
    
    
    /*-- Color --*/
    .mc{color:#F00!important}
    .red{color:red}
    .green{color:green}
    .orange{color:orange}
    .error{color:red}
    .right{color:green}
    
    .c0{color:#000}
    .c1{color:#111}
    .c2{color:#222}
    .c3{color:#333}
    .c4{color:#444}
    .c5{color:#555}
    .c6{color:#666}
    .c7{color:#777}
    .c8{color:#888}
    .c9{color:#999}
    .ca{color:#AAA}
    .cb{color:#BBB}
    .cc{color:#CCC}
    .cd{color:#DDD}
    .ce{color:#EEE}
    .cf{color:#FFF}
    
    .nbg{background:none!important}
    .nbgc{background-color:translate}
    .nbgi{background-image:none}
    .bgw{background-color:#FFF}
    .bgb{background-color:#000}
    
    
    
    /*--Others--*/
    .noscript{background:#FFF9D9; border:1px solid orange; box-shadow:5px 5px 5px rgba(0,0,0,0.5); position:absolute; width:500px; left:50%; margin-left:-250px; top:100px;}
    .hr{border-top:1px solid #CCC; border-bottom:1px solid #FFF; margin:5px auto;}
    .zoom{*zoom:1}
    .shadow{background:white;box-shadow:0 0 2px #CCC}
    
    .cp{cursor:pointer}
    .cd{cursor:default}
    .lighter{font-weight:lighter}
    .fb,.s{font-weight:bold}
    
    .decimal li{list-style-type:decimal}
    .disc li{list-style-type:disc}
    .lino{list-style-type:none}
    
    .ellipsis{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
    
    .u{text-decoration:underline}
    .nu{text-decoration:none!important}
    .del{text-decoration:line-through}
    
    
    .link{text-decoration:underline;}
    
    /*-- Margin --*/
    
    .ma{margin:auto}
    .m0{margin:0!important}
    .m1{margin:1px}
    .m2{margin:2px}
    .m3{margin:3px}
    .m4{margin:4px}
    .m5{margin:5px}
    .m6{margin:6px}
    .m7{margin:7px}
    .m8{margin:8px}
    .m9{margin:9px}
    .ma5{margin:5px auto}
    .ma10{margin:10px auto}
    .ma15{margin:15px auto}
    .ma20{margin:20px auto}
    
    .mlr5tb10{margin:5px 10px}
    .mlr10tb5{margin:10px 5px}
    
    .m5{margin:5px}
    .mt5{margin-top:5px}
    .mr5{margin-right:5px}
    .mb5{margin-bottom:5px}
    .ml5{margin-left:5px}
    .mtb5{margin-top:5px; margin-bottom:5px}
    .mlr5{margin-left:5px; margin-right:5px}
    
    .m10{margin:10px}
    .mt10{margin-top:10px}
    .mr10{margin-right:10px}
    .mb10{margin-bottom:10px}
    .ml10{margin-left:10px}
    .mtb10{margin-top:10px; margin-bottom:10px}
    .mlr10{margin-left:10px; margin-right:10px}
    
    .m15{margin:15px}
    .mt15{margin-top:15px}
    .mr15{margin-right:15px}
    .mb15{margin-bottom:15px}
    .ml15{margin-left:15px}
    .mtb15{margin-top:15px; margin-bottom:15px}
    .mlr15{margin-left:15px; margin-right:15px}
    
    
    
    /*-- Padding --*/
    .p0{padding:0!important}
    .p1{padding:1px}
    .p2{padding:2px}
    .p3{padding:3px}
    .p4{padding:4px}
    .p5{padding:5px}
    .pt5{padding-top:5px}
    .pr5{padding-right:5px}
    .pb5{padding-bottom:5px}
    .pl5{padding-left:5px}
    .ptb5{padding-top:5px; padding-bottom:5px}
    .plr5{padding-left:5px; padding-right:5px}
    
    .p10{padding:10px}
    .pt10{padding-top:10px}
    .pr10{padding-right:10px}
    .pb10{padding-bottom:10px}
    .pl10{padding-left:10px}
    .ptb10{padding-top:10px; padding-bottom:10px}
    .plr10{padding-left:10px; padding-right:10px}
    
    .p15{padding:15px}
    .pt15{padding-top:15px}
    .pr15{padding-right:15px}
    .pb15{padding-bottom:15px}
    .pl15{padding-left:15px}
    .ptb15{padding-top:15px; padding-bottom:15px}
    .plr15{padding-left:15px; padding-right:15px}
    
    .p20{padding:20px}
    .pt20{padding-top:20px}
    .pr20{padding-right:20px}
    .pb20{padding-bottom:20px}
    .pl20{padding-left:20px}
    .ptb20{padding-top:20px; padding-bottom:20px}
    .plr20{padding-left:20px; padding-right:20px}
    
    
    
    /*-- Width --*/
    .wp1{width:1%}
    .wp2{width:2%}
    .wp3{width:3%}
    .wp4{width:4%}
    .wp5{width:5%}
    .wp6{width:6%}
    .wp7{width:7%}
    .wp8{width:8%}
    .wp9{width:9%}
    .wp10{width:10%}
    .wp15{width:15%}
    .wp20{width:20%}
    .wp25{width:25%}
    .wp30{width:30%}
    .wp33{width:33.3333%}
    .wp35{width:35%}
    .wp40{width:40%}
    .wp45{width:45%}
    .wp46{width:46%}
    .wp47{width:47%}
    .wp48{width:48%}
    .wp49{width:49%}
    .wp50{width:50%}
    .wp55{width:55%}
    .wp60{width:60%}
    .wp65{width:65%}
    .wp70{width:70%}
    .wp75{width:75%}
    .wp80{width:80%}
    .wp85{width:85%}
    .wp90{width:90%}
    .wp95{width:95%}
    .wp100,.w{width:100%}
    
    .w10{width:10px}
    .w15{width:15px}
    .w20{width:20px}
    .w25{width:25px}
    .w30{width:30px}
    .w35{width:35px}
    .w40{width:40px}
    .w45{width:45px}
    .w50{width:50px}
    .w55{width:55px}
    .w60{width:60px}
    .w70{width:70px}
    .w80{width:80px}
    .w90{width:90px}
    .w100{width:100px}
    .w110{width:110px}
    .w120{width:120px}
    .w130{width:130px}
    .w140{width:140px}
    .w150{width:150px}
    .w160{width:160px}
    .w170{width:170px}
    .w180{width:180px}
    .w190{width:190px}
    .w200{width:200px}
    .w250{width:250px}
    .w300{width:300px}
    .w400{width:400px}
    .w500{width:500px}
    
    /*-- Height --*/
    .h20{height:20px}
    .h25{height:25px}
    .h30{height:30px}
    .h40{height:40px}
    .h50{height:50px}
    .h100{height:100px}
    .h200{height:200px}
    .h300{height:300px}
    .h400{height:400px}
    .h500{height:500px}
    .hp100{height:100%}
    
    /*-- Indent --*/
    .i5{text-indent:5px}
    .i10{text-indent:10px}
    .i15{text-indent:15px}
    .i20{text-indent:20px}
    .i25{text-indent:25px}
    .i30{text-indent:30px}
    
    /*-- Font --*/
    .f0{font-size:0;}
    .f10{font-size:10px}
    .f12{font-size:12px}
    .f14{font-size:14px}
    .f16{font-size:16px}
    .f18{font-size:18px}
    .f20{font-size:20px}
    .fp100{font-size:100%}
    .fp150{font-size:150%}
    .fp200{font-size:200%}
    
    /*-- LineHeight --*/
    .lh1{line-height:100%}
    .lh120{line-height:120%}
    .lh2{line-height:200%}
    .lh3{line-height:300%}
    .lh4{line-height:400%}
    .lh5{line-height:500%}
    
    .lh20{line-height:20px}
    .lh25{line-height:25px}
    .lh30{line-height:30px}
    .lh35{line-height:35px}
    
    /*---- 上面是base.css文件 ----*/
    
    
    
    
    /*---- 联系人样式开始 ----*/
    body{font-size:12px; padding:20px; background:#f2f2f2; font-family:'微软雅黑'}
    h1{font-size:30px; font-weight:bold; font-family:'times new roman'}
    td,th{padding:5px}
    input[type=text],textarea{border:1px solid #DDD; padding:3px 5px;}
    input[type=text]:focus,textarea:focus,input[type=button]:focus,button:focus{border:1px solid orange; box-shadow:0 0 5px orange}
    input[type=button],button{padding:3px 5px; color:#333; border:1px solid #EEE; background:#DDD}
    
    .datatable{width:400px; border:1px solid #AAA}
    #datatable{background:#FFF;}/*尽量不要使用ID应用样式,这里是测试*/
    #datatable th{background-color:#DADADA}
    #datatable td{}
    #datatable tr:hover{background:#F0F0F0}
    #warp{width:50%; margin:auto; background:#FFF; color:#565656; box-shadow:0 0 10px rgba(0,0,0,0.3)}
    #warp h1{background:#3969AD; height:30px; line-height:30px; color:#FFF; font-size:14px; padding:0 10px; font-weight:lighter}
    .warpBody{border:1px solid #CCC; border-top:none}
    .datatable{width:100%; border:none; background:#FAFAFA!important}
    .datatable th{font-weight:lighter; font-size:14px; background-color:#EFEFEF!important;}
    .datatable td,.datatable th{padding:5px; padding-bottom:7px; background-image:url(images/line_1.png); background-repeat:repeat-x; background-position:0 bottom;}
    .datatable td{}
    .datatable tr:hover{background:#F8F8F8}
    input[type=button],button{width:61px; height:25px; padding:0; color:#666; background-image:url(images/btn_01.png); background-repeat:no-repeat; background-position:0 0; border:none}
    input[type=button]:hover,button:hover{background-position:0 -25px;}
    .labelName{font-size:150%}
    #warp input[type=text]{padding:8px}
    
    /*---- 联系人样式结束 ----*/
    
    </style>
    <script type="text/javascript" src="js/public.js"></script>
    <script type="text/javascript">
    
    function begin() {
        if(typeof openDatabase === 'undefined')return;
        var datatable = null;
        var db = openDatabase('contacts', '1.001', '联系人数据库', 1024000);
        function init() {
            datatable = $('datatable');
            showAllData();
            $('add').addEventListener('click', saveData);
            $('clearAll').addEventListener('click', clearAll);
        }
        function saveData() {
            var name = $("name").value;
            var tel = $("tel").value;
            var qq = $("qq").value;
            var time = new Date().getTime();
            if (!name || !tel || !qq) {
                tip("数据不能为空!", '', '', 'red');
                var input = $("addBox").getElementsByTagName('input');
                for (var i = 0; i < input.length; i++) {
                    if (input[i] && input[i].value === "") {
                        input[i].focus();
                        break;
                    }
                }
            } else {
                addData(name, tel, time, qq);
                $("name").value = "";
                $("tel").value = "";
                $("qq").value = "";
            }
        }
        function showData(row) {
            var tr = document.createElement('tr');
            var td1 = document.createElement('td');
            var td2 = document.createElement('td');
            var td3 = document.createElement('td');
            var td4 = document.createElement('td');
            var td5 = document.createElement('td');
            var t = new Date();
            if (row.nodata) {
                td1.innerHTML = row.nodata;
                td1.setAttribute("colspan", 5);
                tr.appendChild(td1);
            } else {
                t.setTime(row.time);
                td1.innerHTML = row.name;
                td2.innerHTML = row.tel;
                td3.innerHTML = row.qq ? row.qq : '';
                td4.innerHTML = t.toLocaleDateString() + ' ' + t.toLocaleTimeString();
                td4.className = 'cc';
                td5.addEventListener('click', function () {
                    deleteData(row.name);
                });
                td5.className = 'ac c9 cp';
                td5.innerHTML = '删除';
                td5.title = '删除联系人';
                tr.appendChild(td1);
                tr.appendChild(td2);
                tr.appendChild(td3);
                tr.appendChild(td4);
                tr.appendChild(td5);
            }
            datatable.appendChild(tr);
        }
        function removeAllData() {
            for (var i = datatable.childNodes.length - 1; i >= 0; i--) {
                datatable.removeChild(datatable.childNodes[i]);
            }
            var tr = document.createElement('tr');
            var th1 = document.createElement('th');
            var th2 = document.createElement('th');
            var th3 = document.createElement('th');
            var th4 = document.createElement('th');
            var th5 = document.createElement('th');
            th1.innerHTML = '姓名';
            th1.className = 'wp10';
            th2.innerHTML = '电话';
            th2.className = 'wp10';
            th3.innerHTML = 'QQ';
            th3.className = 'wp10';
            th4.innerHTML = '时间';
            th4.className = 'wp60';
            th5.innerHTML = '操作';
            th5.className = 'wp10 ac';
            tr.appendChild(th1);
            tr.appendChild(th2);
            tr.appendChild(th3);
            tr.appendChild(th4);
            tr.appendChild(th5);
            datatable.appendChild(tr);
        }
        function showAllData() {
            db.transaction(function (tx) {
                tx.executeSql('CREATE TABLE IF NOT EXISTS MyContact(name TEXT,tel TEXT,time INTEGER,qq TEXT)', []);
                tx.executeSql('SELECT * FROM MyContact', [], function (tx, rs) {
                    removeAllData();
                    if (rs.rows.length === 0) {
                        showData({
                            nodata : '暂时没有任何记录!'
                        });
                    } else {
                        $('contactCount').innerHTML = rs.rows.length;
                        for (var i = 0; i < rs.rows.length; i++) {
                            showData(rs.rows.item(i));
                        }
                    }
                });
            });
        }
        function addData(name, tel, time, qq) {
            db.transaction(function (tx) {
                tx.executeSql('INSERT INTO MyContact VALUES(?,?,?,?)', [name, tel, time, qq], function (tx, rs) {
                    showAllData();
                    tip("成功添加一条联系人!");
                }, function (tx, error) {
                    //alert(error.source + '::' + error.message);
                    document.write(error.message);
                });
            });
        }
        function deleteData(str) {
            if (confirm('确定删除些联系人 ' + str + ' 吗?')) {
                db.transaction(function (tx) {
                    tx.executeSql('delete from MyContact where name=?', [str], function (tx, rs) {
                        showAllData();
                    }, function (tx, error) {
                        alert(error.message);
                    });
                });
            }
        }
        function clearAll() {
            if (confirm("您确定要删除所有联系人吗?")) {
                db.transaction(function (tx) {
                    tx.executeSql('delete from MyContact', [], function (tx, rs) {
                        showAllData();
                    }, function (tx, error) {
                        alert(error.message);
                    });
                });
            }
        }
        function updataData() {
            db.transaction(function (tx) {
                tx.executeSql('UPDATE MyContact SET name=? where name=?', ['a0', 'a'], function (tx, rs) {}, function (tx, error) {
                    alert(error.message)
                });
            });
    
        }
        updataData();
        function deleteTable() {
            db.transaction(function (tx) {
                tx.executeSql('drop table MyContact');
            });
        }
        window.addEventListener('load', function () {
            init();
        });
    
    }
    
    begin();
    </script>
    </head>
    <body>
    <h1>用HTML5本地数据库制作联系人</h1>
    <div class="c9">使用Chrome或Opera才能看到效果</div>
    <div id="warp">
        <h1>联系人列表</h1>
        <div class="warpBody">
            <table class="wp100">
                <tr id="addBox">
                    <td colspan="4">
                    <label for="name" class="ib m5 wp100"><span class="labelName">姓名:</span><br /><input type="text" name="name" id="name" class="wp95" /></label><br />
                    <label for="tel" class="ib m5 wp100"><span class="labelName">电话:</span><br /><input type="text" name="tel" id="tel" class="wp95" /></label><br />
                    <label for="qq" class="ib m5 wp100"><span class="labelName">QQ:</span><br /><input type="text" name="qq" id="qq" class="wp95" /></label><br />
                    <label for="info" class="ib m5 wp100"><span class="labelName">备注:</span><br /><textarea name="info" id="" cols="30" rows="10" id="info" class="wp95"></textarea></label><br />
                    <button id="add" class="ib m5">添加</button>
                    </td>
                </tr>
                <tr>
                    <td colspan="4">
                    <label for="" class="ib m5 wp100"><input type="text" name="" id="search" class="wp50" /></label>
                    <button id="searchButton" class="ib m5">搜索</button>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" class="" style="line-height:25px; height:25px;"><div id="tip"></div></td>
                    <td class="ar"><span id="contactCount" class="c6 m5">0</span>位联系人</td>
                </tr>
                
            </table>                    
            <table id="datatable" class="datatable"></table>
            <span id="clearAll" class="ar p10 cp">消除所有数据</span>
        </div>
    </div>
    
    </body>
    </html>
  • 相关阅读:
    网络基础
    关于actionscript中新建一个sprite,设置大小(宽高)的问题。
    Android SDK无法更新问题解决 ---- 还可解决无法上google的问题
    android apk简单反编译
    Flash的坑之ExternalInterface.call只返回null值的解决办法
    Flash Socket简单调试工具
    进制转换 正进制
    Codeforces Div3 #498 A-F
    UVa10082
    div与div之间的拖拽
  • 原文地址:https://www.cnblogs.com/kingwell/p/2971241.html
Copyright © 2011-2022 走看看