item是啥?
function showAllData() {//从数据库中提取留言信息
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS MsgData(name TEXT,msg TEXT,time INTEGER)', []);
tx.executeSql('SELECT * FROM MsgData', [], function (tx, result) {
removeAllData();
for (var i = 0; i < result.rows.length; i++) {
showData(result.rows.item(i));
}
});
});
}item 是什么?
item 是 Web SQL Database 中 SQLResultSetRowList 对象的一个内置方法,不是自己定义的,是浏览器 API 规定好的。
详细解释
1. result 是什么?
在 executeSql 的成功回调函数中:
javascript
function (tx, result) {
// result 是 SQLResultSet 对象}result 是一个 SQLResultSet 对象,它包含以下属性:
rows:一个SQLResultSetRowList对象,包含查询返回的所有行rowsAffected:受影响的行数(对于 INSERT、UPDATE、DELETE)insertId:最后插入行的 ID(对于自增字段)
2. result.rows 是什么?
result.rows 是 SQLResultSetRowList 对象,它有两个重要成员:
length属性:返回结果集的行数item(index)方法:返回指定索引处的行数据(作为对象)
3. item() 方法的使用
javascript
for (var i = 0; i < result.rows.length; i++) {
showData(result.rows.item(i));}result.rows.item(i)返回第 i 行数据,是一个对象对象的属性名就是表的列名:
name、msg、time所以
showData()函数中可以这样使用:javascript
function showData(row) { row.name // 访问姓名 row.msg // 访问留言内容 row.time // 访问时间戳}
4. 为什么这样设计?
Web SQL Database 的 API 设计参考了传统的数据库 API(如 JDBC 的 ResultSet),使用 item() 方法是为了:
明确的 API 接口:通过方法而不是直接索引访问
兼容性考虑:虽然早期浏览器也支持
result.rows[i]直接访问,但item()是标准方法
5. 实际对比
这两种写法在大多数浏览器中都能工作:
javascript
// 标准写法(使用 item)showData(result.rows.item(i));// 简写(很多浏览器也支持)showData(result.rows[i]);
但为了代码的规范性和兼容性,通常使用 item() 方法。
总结
item 是 Web SQL Database API 规定好的内置方法,不是自定义的。它用于从结果集对象中按索引取出某一行数据,返回一个包含该行所有字段的对象。