在“Encaisser”函数中,“i”的值在for中为OK,但如果我在函数中的函数中调用“i”,则“i”返回“Undefined。
function Encaisser()
{
for(var i=1; i <= Nombre_ligne_en_caisse; i++)
{
db.transaction(function(t,i){ t.executeSql('SELECT En_cour FROM Sequence WHERE Nom="Ticket_ID"', [], function(tx,rs,i){
var row = rs.rows.item(0);
var Tick_ID = row['En_Cour'];
var Noma = window['Produit_en_caisse_' + i] ;
alert(i); //Undefined
alert(Noma); //Undefined
}, [])});
alert(i); //If i put the alert here, its OK
}
}
你知道为什么吗?
谢谢,
答案 0 :(得分:0)
问题是你的内部函数在这里定义了一个名为i
的参数:
db.transaction(function(t,i){ ...
如果您打算将i
作为外部函数的值,我建议您只删除此参数。看来db.transaction
实际上并没有为此参数提供值。您可能还希望在单独的变量中每次迭代时关闭i
的值,并在函数内使用它,如下所示:
var index = i;
db.transaction(function(t){ ...
var Noma = window['Produit_en_caisse_' + index ];
alert(index);
答案 1 :(得分:0)
您在i
回调和db.transaction
回调中重新定义了t.executeSql
。在t.executeSql
回调中,i
必须未定义。
如果您想从for循环中访问 i
的值,则需要在回调中重命名这些参数。