機能:遅延は、私はループのために、この中に小さな遅延を作成する必要が
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);
}
}
stackoverflowの例に続いて、私は、このソリューションを試してみました:
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));
}
は、しかし、これは内部の機能を破ります。 myElemは常にnullになっているようです。あまりにも多くの "私"ですか?これをどうすれば解決できますか?
'for'ループが最後までほとんどすぐに実行されます。このような遅延の作成は単純な問題ではありません。ここで私の答えを見てください:https://stackoverflow.com/a/37563825/5768908 –
あなたの変数は 'i'宣言されていますか? *(明示的にまたは暗黙的に)*関数が実行されたときに 'i'の値をチェックしましたか? – Thomas
Gerardも動作しません。 "i"はループのためだけに使用されます。遅延コードがなければ、元のコードは正常に動作します(https://pastebin.mozilla.org/9071510)。これはform1、form2などを循環します。サーバーは同時に10個の投稿を処理できないため、遅延が必要です。 –