实现原理:
界面中,存在一个输入姓名的文本框,一个输入留言的文本框,以及一个保存数据使用的按钮,在按钮下面放置一个表格,保存数据后从数据库中重新拿去的所有数据,然后把数据显示在这个表格中。再单击按钮时,调用saveData()函数,保存数据时的处理都被写在了这个函数里;另外,打开页面时将调用init()函数(<body onload="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 onload="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="保存" onclick="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(); }