我正在通过Cordova
开发一款Android应用。我正在从Sqlite表中读取值并使用Javascript
显示在表中。
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
var tblText='<table id="t01"><tr><th>ID</th> <th>Name</th> </tr>';
var len = results.rows.length;
for (var i = 0; i < len; i++) {
tblText +='<tr onclick="alert('+results.rows.item(i).data+')"><td>' + results.rows.item(i).id +'</td><td>'+ results.rows.item(i).data+'</td></tr>';
}
tblText +="</table>";
document.getElementById("tblDiv").innerHTML =tblText;
}
..
<body>
..
<div id="tblDiv"></div>
..
</body>
..
'results.rows.item(i).data'显示我在''标签中使用它时的数据。但alert
对话框从未出现过这一部分:
<tr onclick="alert('+results.rows.item(i).data+')"><td>'
我知道如果我这样做,onClick
会显示i
<tr onclick="alert('+ i +')"><td>'
但我无法弄清楚为什么它没有展示results.rows.item(i).data
或results.rows.item(i).data.toString()
有什么想法吗?
答案 0 :(得分:0)
确定!我找到了解决方案。深入研究我的代码后,我意识到这段代码:
tblText +='<tr onclick="alert('+results.rows.item(i).data+');"><td>'
alert
函数看起来像这样:
alert(rowdata); //Assume rowdata is a string from my database
很明显,Javascript
会将rowdata
看作undefined
或null
的变量。所以我把代码更改为:
tblText +='<tr onclick="alert("'+results.rows.item(i).data+'");"><td>'
这样alert
函数看起来像这样:
alert("rowdata");
现在它就像一个魅力!