2012-10-12 38 views
0

我似乎没有找到任何办法来解决这个out..so我猜即时将需要一些帮助.. 即时制作中,我有一个SQLite数据库的PhoneGap应用程序。我执行一个查询,并从数据库中获得一个动态创建的结果,事情是,我想为每个记录,我提取使包含它的div,作为一个可编辑角色的按钮..打开一个div成一个按钮动态

比如让说,我有这些列ID选项1选项分贝,我有三个记录.. 这意味着我将有三个div的 我想,每一个DIV是一个按钮,如果用户点击它是能够执行删除(或编辑/更新)查询而不用担心id 举例来说,如果他选择做DIV2进行查询,将删除第二个记录..

到目前为止我的代码..

for (var i = 0; i < len; i++) { 
    var test1 = results.rows.item(i).option1; 
    var d = new Date(); 
    d.setTime(results.rows.item(i).date); 
    var newLI = document.createElement("LI"); 
    newLI.className = lt; 
    newLI.id = results.rows.item(i).id; 
    var container = ("<div id=\"" + results.rows.item(i).id + "\" class=\"test\"><div id=\"text\">option1</div><div id=\"data\">" + test1 + "</div></div>"); 
    newLI.innerHTML = cont; 
    var gl = document.getElementById("sqltest"); 
    gl.appendChild(newLI); 
} 
for (var i = 0; i < len; i++) { 
    var divid = "#" + results.rows.item(i).id; 
    $(divid).on("click", function() { 
     alert(divid); 
    }) 
} 

<ul id="sqltest"></ul> 

问题,上面的代码,就是虽然每个DIV得到正确的ID ,当我点击它,我总是得到例如#1相同的结果,虽然我可能有3周的div .. 而不必结果

div1 alert #1 div2 alert #2 

我得到

div1 alert #1 div2 alert#1 

我用警报只是简化它,而不是警告会有DELETE from SQLDB WHERE id=results.rows.item(i).id;

+0

U可以用一个按钮的html代替html吗? – ryanc1256

+0

股利确实成为clickable..however奇怪的是,虽然所有的即3周的div变成可点击的,并意味着在DIVID确实目标的正确DIV,惊动时,它会返回错误值.. – nikolas

+1

哦,我没有”没有正确的阅读问题,你总是可以提醒所有的变量,并看看代码在做什么?这通常帮助我 – ryanc1256

回答

1

你retreiving总是相同的“DIVID”变量,因为JavaScript的范围和封锁的工作方式。这是一个非常常见的错误。你可以谷歌“JavaScript关闭臭名昭着的循环”以获得更多关于此信息。

你应该为这个替换您的

for (var i = 0; i < len; i++) { 

    (function() { 
     var divid = "#" + results.rows.item(i).id; 
     $(divid).on("click", function() { 
      alert(divid); 
     }); 
    })(); 
} 

这样一来,可变DIVID在不同的范围,每次申报。

我不明白这是否是唯一的问题。

+0

休息后,我意识到我做错了什么,但没有解决如何解决它..美元(divid)得到正确的价值,但可能警报是采取了错误的,因为警报是在函数内部执行的,实际上在循环结束和按钮被按下之后,所以警报值错误是合理的。我会尝试你的例子来看看thsat是否修复它..但我认为这不是一个即时通讯具有毕竟.. – nikolas

+0

更新唯一的问题...它没有做的伎俩毕竟...:S 如果我叫第二次的函数,那么DIVID变量保存以前的值以及...:S – nikolas

+1

你在调用哪个函数?您可以点击div的任意次数,并始终提醒其ID。请更具体,以便我可以帮助你。 – Pato

相关问题