javascript超时超时

我使用jquery来开发移动应用程序,这里是我的代码下面的问题,当我向页面添加5或6行时,一切顺利。 但如果我添加多行显示错误消息:Javascript执行已执行超时。

function succes_recu_list_rubrique(tx, results) //apés avoire remplir sqlite { console.log('ENTRééééééééééééééé---') $('#lbtn').prepend("Selectionner un Rubrique
"); for( var i=0; i<results.rows.length; i++ ) //Remplir tableau liste des identifiants étapes { $('#lbtn').append(""); $('#lbtn').append(''); } $('#lbtn').append('Consulter').trigger('create'); $('#lbtn').append('Cancel ').trigger('create'); }

很难知道,结果有多大。 但是你应该开始缓存你的jQuery对象并尝试最小化你的DOM插入

以下是未经测试但会指出正确的方向:

 function succes_recu_list_rubrique(tx, results) //apés avoire remplir sqlite { console.log('ENTRééééééééééééééé---') var htmlToAppend = ""; var $lbtn = $('#lbtn'); htmlToAppend += "Selectionner un Rubrique
"; for( var i=0; i"; htmlToAppend += ""; } $lbtn.append(htmlToAppend); $lbtn.append('Consulter').trigger('create'); $lbtn.append('Cancel ').trigger('create'); }

@soderslatt朝着正确的方向前进。 请参阅http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly了解如何附加到未附加到DOM的元素(并避免重绘和重排)然后追加它到DOM并且只支付一次罚款

以下解决方案将解决您的问题。 诀窍是在执行代码之前使用非常小的1毫秒的setTimeout函数等待。 使用上述方法将允许您解锁线程并避免超时超时错误。

示例示例:

 function succes_recu_list_rubrique(tx, results) { var i = 0; function appendOperation() { $('#lbtn').append( [ "", "" ].join("") ); if (i++ < results.rows.length) { setTimeout(appendOperation, 1); } } appendOperation(); }