将Javascript变量从一个函数传递到另一个函数以在sqlite查询中使用

时间:2011-05-12 23:46:50

标签: javascript sqlite

我正在尝试编写一个Javascript函数,该函数从sqlite数据库获取一系列唯一ID。然后传递它们以用于另一个函数,其中id可以在另一个sql查询中使用,它们也构成动态创建列表的一部分。

我设法将ids行['id']传递给数组变量window.symp [i]。但我无法在下面的第二个函数中正确访问它们,第二个函数正确地使用id来创建动态html,但传递给sqlite查询的变量失败或者在创建的所有列表项中都是相同的值。任何帮助将不胜感激 - 我已经包括以下两个功能:

function showContent() {
    db.transaction(function (tx) {
        tx.executeSql("SELECT id, notes FROM webkit WHERE notes LIKE 'A%'", [], function (tx, result) {
            var notesanode = document.getElementById('notesa');
            notesanode.innerHTML = "";

            for (var i = 0; i < result.rows.length; ++i) {
                var row = result.rows.item(i);
                window.symp[i] = i;
                window.symp[i] = row['id'];
                var noteadiv = document.createElement('div');
                noteadiv.innerHTML = '<li class=\"arrow\"><a id=\"0\" onClick=\"showSymptoms()\" href=\"#symptoms\">' + row['notes'] + " " + row['id'] + '</a></li>';
                notesanode.appendChild(noteadiv);

            }

        }, function (tx, error) {
            alert('Failed to retrieve notes from database - ' + error.message);
            return;
        });
    });
}

function showSymptoms() {
    db.transaction(function (tx) {
        tx.executeSql("SELECT sid, symptom FROM slinks WHERE id LIKE ('" + symp + "')", [], function (tx, result) {
            var symptomnode = document.getElementById('symptomid');
            symptomnode.innerHTML = "";

            for (var i = 0; i < result.rows.length; ++i) {
                var row = result.rows.item(i);
                var symptomdiv = document.createElement('div');
                symptomdiv.innerHTML = '<p><label> <input type=checkbox>' + row['symptom'] + '</label></p>';
                symptomnode.appendChild(symptomdiv);
            }

        }, function (tx, error) {
            alert('Failed to retrieve notes from database - ' + error.message);
            return;
        });
    });
}

1 个答案:

答案 0 :(得分:0)

我看到两件事:

主要问题是你需要

"SELECT sid, symptom FROM slinks WHERE id LIKE ('" + window.symp.join(',') + "')"

而不是你在那里。

第二个问题是你有

window.symp[i] = i;
window.symp[i] = row['id'];

您可以继续删除window.symp[i] = i;,因为它会立即被其后面的行覆盖。