1

各送信後に10秒の遅延を維持したい

これは私のサンプルプログラムです

<html>
 <head>
 <script type="text/javascript">
function sleep(ms)
    {
        var dt = new Date();
        dt.setTime(dt.getTime() + ms);
        while (new Date().getTime() < dt.getTime());
    }

function test() {
var windowCounter = 1; 
var myStringArray = [ "user1", "user2" , "user3" , "user4" ]
var len = myStringArray.length;
for (var i=0; i<3; ++i) {
   document.inform.target = windowCounter++; // a different target each time
    document.inform.submit();
}
}
</script>
 </head>
 <body >
  <form name="inform"   target="newWin" action="https://www.google.co.in/">
 <input type="hidden" name="throttle" value="999" />
    <input type="submit" value="go" onclick="test()">
  </form>
 </body>
</html>

私は今までこれらのオプションを試しました

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

if(i==1)
sleep(10000);
if(i==2)
sleep(10000);

   document.inform.target = windowCounter++; // a different target each time
    document.inform.submit();
}

しかし、まだすべての送信が同時に呼び出されています

それで

var windowCounter = 1;
for (var i=0; i<=2; i++) {
    setTimeout(function() {
        document.inform.target = windowCounter++; 
        document.inform.cid.value="XXXX";
        document.inform.pw.value="xxxxx";
        document.inform.submit();
    }, i*10000); // 
}

しかし、このタイムアウトを追加すると、cr-ns-error-not-available (タイムアウトのため) が発生しました。

最後に私は試しましたが、まだ同時に呼び出されています

 var len = 1;
    var len2 = 1;
    var len3 = 1;

    if(len==1)
    {
    sleep(4000);
       document.inform.target = 1; // a different target each time
        document.inform.submit();
    }


    if(len2==1)
    {
    sleep(4000);
       document.inform.target = 2; // a different target each time
        document.inform.submit();
    }

これに対する解決策はありますか??

4

2 に答える 2

1

このような関数を作成して呼び出すことができます:-

  var i = 1;                     
   function A() {           
  setTimeout(function () {    
  i++;                    
  if (i < 10) {            
     A();            
  }                        
  }, 3000)
}

 A(); 
于 2012-11-06T19:49:39.323 に答える
0

私はあなたの質問の多くを本当に理解していませんが、これは多分/役に立つかもしれません:各フォームがインラインonclick関数としてtest()を持っているなら、これはおそらくどういうわけかうまくいくはずです。

var windowCounter = 0;
function test() { 
   windowCounter++;
   setTimeout(function(){
     if(windowCounter == 1) // bla
     else if(windowCounter == 2) // bla
  }, 10000);
}
于 2012-11-06T19:56:05.380 に答える