2013-03-04 68 views
-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); } 

我写这个。它是否正确?如果没有请解决这个问题。我想为后续的js代码创建一个for循环。请帮我

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

感谢

+1

为什么你再次发布相同的问题? – 2013-03-04 20:54:34

回答

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第一个参数是一个函数
  • 作为suggered由yabol,元素被缓存
+2

将'document.getElementById(“myDiv”)'保存在变量的循环外部,性能会更好。当然,只有#myDiv元素不会改变。 – 2013-03-04 20:30:52

+0

@yabol是的,那会更好。表演并不重要('getElementById'非常快),但这显然是一个好习惯。 – 2013-03-04 20:32:34

+0

是的,我知道它很快,但如果作者想要更改元素选择更费时;) – 2013-03-04 20:34:25