-2
function fade90() { document.getElementById("myDiv").style.opacity="0.90"; setTimeout("fade80()", 100); }
function fade80() { document.getElementById("myDiv").style.opacity="0.80"; setTimeout("fade70()", 100); }
function fade70() { document.getElementById("myDiv").style.opacity="0.70"; setTimeout("fade60()", 100); }
function fade60() { document.getElementById("myDiv").style.opacity="0.60"; setTimeout("fade50()", 100); }
function fade50() { document.getElementById("myDiv").style.opacity="0.50"; setTimeout("fade40()", 100); }
function fade40() { document.getElementById("myDiv").style.opacity="0.40"; setTimeout("fade30()", 100); }
function fade30() { document.getElementById("myDiv").style.opacity="0.30"; setTimeout("fade20()", 100); }
function fade20() { document.getElementById("myDiv").style.opacity="0.20"; setTimeout("fade10()", 100); }
function fade10() { document.getElementById("myDiv").style.opacity="0.10"; setTimeout("hide()", 100); }

これを書きます。これは正しいです?そうでない場合は、これを修正してください。

function cls_msg(){
for (i=1;i<10;i++)
{
setTimeout(document.getElementById("myDiv").style.opacity=100-(i*10), 100);
}

ありがとう

4

1 に答える 1

1

おそらくこれが必要です:

var elem = document.getElementById("myDiv");
for (i=1;i<10;i++) {
   (function(i){
      setTimeout(
        function(){elem.style.opacity=100-(i*10)},
        (i+1)*100
      );
   })(i);
}

あなたのコードとの違い:

  • タイムアウトは異なるため、同時にすべてが呼び出されることはありません (コードは、次のタイムアウトが実行されるまで一時停止しません)。
  • iタイムアウトが発生したときにループの終わりの値を持たないように、クロージャーによって保護されています
  • に渡される最初の引数setTimeoutは関数です
  • yabol が示唆するように、要素はキャッシュされます
于 2013-03-04T20:28:09.577 に答える