【问题标题】:window.alert message is not showing Sqlite row datawindow.alert 消息未显示 Sqlite 行数据
【发布时间】:2014-10-24 07:59:01
【问题描述】:

我正在通过Cordova 开发一个安卓应用程序。我正在从 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).dataresults.rows.item(i).data.toString()

有什么想法吗?

【问题讨论】:

  • 你不能那样做(results.rows.item(i).data outside querySuccess function) 分配一些变量或分配给一些字段得到那个值。
  • 你需要使用JSON.stringify()函数。例如JSON.stringify(results.rows.item(i).data) 获取值。
  • @frank 我应该这样使用它> '&lt;tr onclick="alert('+JSON.stringify(results.rows.item(i).data)+')"&gt;&lt;td&gt;' ?

标签: javascript android sqlite cordova


【解决方案1】:

好的!我找到了我的解决方案。在深入研究了我的代码后,我意识到通过这段代码:

tblText +='<tr onclick="alert('+results.rows.item(i).data+');"><td>'

alert 函数看起来像这样:

alert(rowdata); //Assume rowdata is a string from my database

所以很明显Javascript 将把rowdata 看作是undefinednull 的变量。所以我把代码改成这样:

tblText +='<tr onclick="alert("'+results.rows.item(i).data+'");"><td>'

所以alert 函数看起来像这样:

alert("rowdata");

现在它就像一个魅力!

【讨论】:

    猜你喜欢
    • 2018-04-07
    • 2019-06-09
    • 1970-01-01
    • 2021-12-09
    • 2017-02-07
    • 2012-08-03
    • 2015-02-12
    • 1970-01-01
    相关资源
    最近更新 更多