有人可以帮助我,我认为这可能是一个简单的问题。我认为问题可能在于我的SQL select语句,但可能没有。
我有一个名为tableOne的表,有两列,name和total,调用函数editRecord并将有问题的行的id传递给它,这样我就可以选择这一行,然后调用editRecords2函数。第二个函数在html中生成一个表单,并将表中特定行的名称和总值添加到表单框中。
问题是所需行的值永远不会出现在表单中,始终是最后一行的值进入表单。代码如下,任何帮助都会很棒,谢谢!
function editRecord(id) {
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM tableOne WHERE id=?', [id], editRecords2);
});
}
function editRecords2() {
f = $('#edit');
f.html("");
f.html(f.html() + ' <form method="get" id="edit_form"><div><input type="name" id="editname" value="' + r['name']+'" size="30"/><input type="number" current id="editamount" value="' + r['total']+'" name="amount" size="15" /><input type="submit" value="Save" /></div></form> ');
}
答案 0 :(得分:6)
我还没有测试过代码 但这将有助于您获得输出
function editRecord(id) {
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM tableOne WHERE id=?', [id], function(tx,results){
for (var i=0; i < results.rows.length; i++){
row = results.rows.item(i);
editRecords2(row.name,row.total);
}
});
});
}
function editRecords2(name,total) {
f = $('#edit');
f.html("");
f.html(f.html() + ' <form method="get" id="edit_form"><div><input type="name" id="editname" value="' + name+'" size="30"/><input type="number" current id="editamount" value="' + total+'" name="amount" size="15" /><input type="submit" value="Save" /></div></form> ');
}
如果发生任何问题请与我联系。
答案 1 :(得分:1)
我认为您需要关注的是SQLite的用户定义函数。您希望SQL为表中的每条记录调用您的函数。这必须在SQL级别完成,而不是在JavaScript级别完成。在C ++中,它是一块蛋糕,SQLite有一个sqlite_create_function(),允许你这样做。我不确定是否有一个用于JavaScript,但这是你需要寻找的。 p>
答案 2 :(得分:-1)
SQLite看起来有点棘手。但似乎如果尝试在没有服务器端语言的情况下访问它,您将无法获得成功