HTML 页面: HTML 页面,作为应用程序核心,起到模型作用。它包含要显示的数据以及(默认)提交信息。页面的 HTML 元素是按 HTML Document Object Model (DOM) 树层级组织的。用户发起的事件产生一个传统的请求-响应循环,其中有页面加载和执行相关 JavaScript 函数。
值得注意的是,本应用程序包含一个单独的 HTML 页面,无需通过请求-响应循环加载更多 HTML 页面。所有动作都在一个页面上。
JavaScript: JavaScript 元素包含应用程序控制器函数。HTML 元素通过事件处理器绑定到 JavaScript 函数。JavaScript 能通过用所有用户界面(UI)元素访问应用程序的 HTML DOM 树,并将其用作运算的数据输入。处理结果可以通过修改 HTML 页面显示给用户。
层叠样式表: 层叠样式表(CSS)描述 HTML 页面如何提交。此处省略视图任务以简化方案。对于这一阶段扩展,只使用 HTML 元素的默认提交行为。
对于移动设备,有各种 JavaScript/CSS 库和框架来发布与 Web 应用程序接近的用户体验(例如,用于 iPhone 的 iUi)。请查看 参考资料 获取更多信息。尽管需要增加用户接受度,但本方法有着平台依赖性的劣势。
function onInit(){ try { if (!window.openDatabase) { updateStatus("Error: DB not supported"); } else { initDB(); createTables(); queryAndUpdateOverview(); } } catch (e) { if (e == 2) { updateStatus("Error: Invalid database version."); } else { updateStatus("Error: Unknown error " + e + "."); } return; } }
function initDB(){ var shortName = 'stuffDB'; var version = '1.0'; var displayName = 'MyStuffDB'; var maxSize = 65536; // in bytes localDB = window.openDatabase(shortName, version, displayName, maxSize); }
//remove old table rows var dataRows = document.getElementById("itemData").getElementsByClassName("data"); while (dataRows.length > 0) { row = dataRows[0]; document.getElementById("itemData").removeChild(row); };
//read db data and create new table rows var query = "SELECT * FROM items;"; try { localDB.transaction(function(transaction){
transaction.executeSql(query, [], function(transaction, results){ for (var i = 0; i < results.rows.length; i++) {
var row = results.rows.item(i); var li = document.createElement("li"); li.setAttribute("id", row['id']); li.setAttribute("class", "data"); li.setAttribute("onclick", "onSelect(this)");
var liText = document.createTextNode(row['amount'] + " x "+ row['name']); li.appendChild(liText);
document.getElementById("itemData").appendChild(li); } }, function(transaction, error){ updateStatus("Error: " + error.code + "<br>Message: " + error.message); }); }); } catch (e) { updateStatus("Error: Unable to select data from the db " + e + "."); } }
function onSelect(htmlLIElement){ var id = htmlLIElement.getAttribute("id"); query = "SELECT * FROM items where id=?;"; try { localDB.transaction(function(transaction){
Reprint policy:
All articles in this blog are used except for special statements
CC BY 4.0
reprint policy. If reproduced, please indicate source
John Doe
!