Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Javascript变量从一个函数传递到另一个函数以用于sqlite查询_Javascript_Sqlite - Fatal编程技术网

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

将Javascript变量从一个函数传递到另一个函数以用于sqlite查询,javascript,sqlite,Javascript,Sqlite,我试图编写一个Javascript函数,该函数从sqlite数据库中获取一个惟一id数组,然后将它们传递给另一个函数,在该函数中,id可以用于另一个sql查询,它们还构成动态创建的列表的一部分 我已设法将ids行['id']传递给数组变量window.symp[I]。但是我无法在下面的第二个函数中正确地访问它们,第二个函数正确地使用ID创建动态html,但是传递给sqlite查询的变量要么失败,要么在创建的所有列表项中都是相同的值。任何帮助都将不胜感激-我已包括以下两个功能: function

我试图编写一个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;
        });
    });
}
我看到两件事:

主要问题是你需要

"SELECT sid, symptom FROM slinks WHERE id LIKE ('" + window.symp.join(',') + "')"
而不是你在上面的东西

第二个问题是你有

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

您可以继续并移除窗口。symp[i]=i;因为它会立即被它后面的行覆盖。

您好,很抱歉,这不起作用,因为变量window.symp在测试时确实保存了所有正确的ID,但由于某些原因,我仍然无法在第二个函数select语句中单独访问它们。正如建议的那样,我已经移除了window.symp[I]=I;那很好。如果您在select语句中使用window.symp.join',会发生什么情况?当我将window.symp.join',添加到select语句时,页面加载没有结果,当我测试变量symp时,它与之前持有完全相同的数组。很抱歉,我之前没有很好地解释,数组中的ID是正确的,我只是不知道如何根据在第一个函数中选择的动态创建的列表项,用正确的数组索引值更新变量symp。因此,例如,第一个函数创建了一个包含6个id为1到6的项目的列表,然后用户选择其中一个列表项目,该列表项目应为其提供一组复选框,这些复选框是根据附加到所选列表项目的id动态创建的。我不能告诉你我是多么感激你的帮助。我只是注意到了一些其他的事情,我认为你想要的SQL结构是不一样的。用join','函数试试。