为什么这个setTimeout()方法不能在这个函数中工作?

时间:2012-07-14 14:37:47

标签: javascript

function SlideShow(area)
    {
        var SlideImg = new Array('img1', 'img2');
        var SlideArea = document.getElementById(area);
        for(i=0;i<SlideImg.length;i++)
        {
            var html = '<img src="images/room/' + SlideImg[i] + '.jpg" id="' + SlideImg[i] + '" class="not-active" />';
            SlideArea.innerHTML += html;
        }
        var a = 0;
        function RunSlide()
        {
            document.getElementById(SlideImg[a]).className = 'active';
            a++;    
        }
        var run = setTimeout('RunSlide()', 5000);
    }

在我添加setTimeout()方法后,此函数无法正常工作。有人能帮助我吗?

1 个答案:

答案 0 :(得分:9)

只需将其更改为:

var run = setTimeout(RunSlide, 5000);

原因是:当您将字符串传递给setTimeout()时,它在全局上下文中eval - 其中RunSlide不可见,因为它是本地的。

将字符串传递给setTimeout()绝不是一个好主意,这里有一个理由。