2011-05-12 41 views
0

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

我已经设法将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; 
     }); 
    }); 
} 

回答

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;因为它被立即被它后面的线覆盖。

+0

如果在select语句中使用'window.symp.join(',')'会发生什么? – 2011-05-13 13:16:19

+0

嗨,对不起,但没有动态创建,因为当我测试它时,变量window.symp包含所有正确的ID,但由于某种原因,我仍然无法在第二个函数select语句中单独访问它们。建议我已经删除了window.symp [i] = i;这很好。任何进一步的投入将不胜感激。 – Derek 2011-05-13 08:07:48

+0

当我将window.symp.join(',')添加到select语句时,页面加载时没有结果,当我测试变量symp时,它与之前保持完全相同的数组。 – Derek 2011-05-13 18:39:52