Ich brauche eine kleine Verzögerung in dieser for-Schleife zu erstellen:Verzögerung bei der für Schleife Pausen funktionieren
for (i = 1; i <= cloneIndex; i++) {
var myElem = document.getElementById('form' + i);
if (myElem != null) {
function postData() {
return {
udd: document.getElementById('udd').value,
data: date_in,
hora_ini: hour_in,
hora_fim: hour_out,
cat: $('#form' + i).find('select[id="cat"]').val(),
m1: $('#form' + i).find('select[id="q1"]').val(),
m2: $('#form' + i).find('select[id="q2"]').val(),
m3: $('#form' + i).find('select[id="q3"]').val(),
m4: $('#form' + i).find('select[id="q4"]').val(),
m5: $('#form' + i).find('select[id="q5"]').val()
}
}
var newItem = postData();
$2sxc(@Dnn.Module.ModuleID).webApi.post('app/auto/content/audits', {}, newItem);
}
}
Nach Stackoverflow Beispiele habe ich versucht, diese Lösung:
for (i = 1; i <= cloneIndex; i++) {
(function(i){
setTimeout(function(){
var myElem = document.getElementById('form' + i);
if (myElem != null) {
function postData() {
return {
udd: document.getElementById('udd').value,
data: date_in,
hora_ini: hour_in,
hora_fim: hour_out,
cat: $('#form' + i).find('select[id="cat"]').val(),
m1: $('#form' + i).find('select[id="q1"]').val(),
m2: $('#form' + i).find('select[id="q2"]').val(),
m3: $('#form' + i).find('select[id="q3"]').val(),
m4: $('#form' + i).find('select[id="q4"]').val(),
m5: $('#form' + i).find('select[id="q5"]').val()
}
}
var newItem = postData();
$2sxc(Dnn.Module.ModuleID).webApi.post('app/auto/content/audits', {}, newItem);
}
}, 1000 * i);
}(i));
}
dies jedoch bricht die Funktion im Inneren . Es scheint, dass myElem jetzt immer null ist. Zu viele "i" s? Wie kann ich das beheben?
A 'for' Schleife wird fast sofort bis zum Ende laufen. Solche Verzögerungen zu schaffen ist keine einfache Sache. Sehen Sie sich meine Antwort hier an: https://stackoverflow.com/a/37563825/5768908 –
In welchem Umfang wird Ihre Variable 'i' deklariert? * (explizit oder implizit) * Und hast du den Wert von "i" überprüft, wenn die Funktion ausgeführt wird? – Thomas
Funktioniert auch nicht Gerard. "i" wird nur für die Schleife verwendet. Ohne den Verzögerungscode funktioniert der ursprüngliche Code einwandfrei (https://pastebin.mozilla.org/9071510), er durchläuft form1, form2 usw. Ich brauche nur die Verzögerung, da der Server nicht 10 Posts gleichzeitig verarbeiten kann. –