当前位置:  开发笔记 > 编程语言 > 正文

传递给setTimeout的函数变量不起作用?

如何解决《传递给setTimeout的函数变量不起作用?》经验,为你挑选了1个好方法。

谁能告诉我为什么这不起作用?

function changeBG(element_id){
        document.getElementById(element_id).className= "arrowActive";
        setTimeout("document.getElementById("+element_id+").className= 'arrow'", 300);
}

在firebug中,我得到一个错误,说明传递给setTimeout()的element_id没有定义.



1> Greg..:

变量element_id将是一个字符串,因此您的超时代码如下所示:

document.getElementById(myId).className = ...

请注意myId应该在引号中,但事实并非如此.

更好的方法是使用闭包,如下所示:

function changeBG(element_id)
{
        var elm = document.getElementById(element_id);
        elm.className = "arrowActive";
        setTimeout(function() { elm.className= 'arrow'; }, 300);
}

应该注意的是,不建议将代码传递给字符串.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有