(十)HTML5本地存储——SQLLite实现web留言本

实现原理:

      界面中,存在一个输入姓名的文本框,一个输入留言的文本框,以及一个保存数据使用的按钮,在按钮下面放置一个表格,保存数据后从数据库中重新拿去的所有数据,然后把数据显示在这个表格中。再单击按钮时,调用saveData()函数,保存数据时的处理都被写在了这个函数里;另外,打开页面时将调用init()函数(<body οnlοad="init()></body>),将数据库中全部已保存的留言信息显示在表格中。

 

实现代码:

 

SQLLite.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>使用SQLLite数据库实现web留言本</title>
    <script type="text/javascript" src="script4.js"></script>
</head>
<body οnlοad="init()">
    <h1>使用SQLLite数据库实现web留言本</h1>
    <table>
        <tr><td>姓名:</td><td><input type="text" id="name"></td></tr>
        <tr><td>留言:</td><td><input type="text" id="memo"></td></tr>
        <tr>
            <td></td>
            <td><input type="button" value="保存" οnclick="saveData();"></td>
        </tr>
    </table>
    <hr>
    <table id="dataTable" border="1"></table>
    <p id="msg"></p>
</body>
</html>


 

script4.js

 

//打开数据库
var dataTable = null;
//var db = openDatabase('MyData','','My Database',102400);
var db = openDatabase("MsgData", "1.0", "留言表", 1024 * 1024, function () { });
//初始化
function init(){
    dataTable = document.getElementById("dataTable");
    showAllData();
}
//擦除表格中当前显示的数据
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');
    th1.innerHTML = '姓名';
    th2.innerHTML = '留言';
    th3.innerHTML = '时间';
    tr.appendChild(th1);
    tr.appendChild(th2);
    tr.appendChild(th3);
    dataTable.appendChild(tr);
}
//显示数据
function showData(row){
    var tr = document.createElement('tr');
    var td1 = document.createElement('td');
    td1.innerHTML = row.name;
    var td2 = document.createElement('td');
    td2.innerHTML = row.message;
    var td3 = document.createElement('td');
    var t = new Date();
    t.setTime(row.time);
    td3.innerHTML = t.toLocaleDateString()+" "+t.toLocaleTimeString();
    tr.appendChild(td1);
    tr.appendChild(td2);
    tr.appendChild(td3);
    dataTable.appendChild(tr);
}
//显示全部数据
function showAllData(){
    db.transaction(function(tx){
        tx.executeSql('create table if not exists MsgData(name text,message text,time integer',[]);
        tx.executeSql('select * from MsgData',[],function(tx,rs){
            removeAllData();
            for(var i = 0;i < rs.rows.length;i++){
                showData(rs.rows.item[i]);
            }
        });
    });
}
//追加数据
function addData(name,message,time){
    db.transaction(function(tx){
        tx.executeSql(
        'insert into MsgData(name,message,time) values(?,?,?)',
        [name,message,time],
        function(tx,rs){
            alert("成功保存数据!");
        },
        function(tx,error){
            alert(error.source + "::" + error.message);
        }
        );
    });
}
//保存数据
function saveData(){
    var name = document.getElementById('name').value;
    var memo = document.getElementById('memo').value;
    var time = new Date().getTime();
//    alert(name + memo + time);
    addData(name,memo,time);
    showAllData();
}


 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值