处理点击事件中的变量

时间:2013-04-25 11:12:36

标签: javascript javascript-events

我使用以下函数动态创建了一个画布:

var animating=false;
function create_canvas(Container,Id,Width,Height)
{
 ...//set width,height
 //added a click event listener
 document.getElementById(Id).addEventListener("click", function () 
        {
            if(animating==true)
            {
                alert("Running the animation"); //can't reach this part 
                return;
            }
            else
            {
                animating=true;
                run_canvas();
                animating=false;
            }
        });
 ...//append to Container
}
function run_canvas()
{
 ...//some code here 
}

现在每当我点击画布时,无论如何动画都会启动。我的意思是全局变量动画不会改变它的值。因此我的问题是:我做错了什么,我应该如何应对这种情况。

1 个答案:

答案 0 :(得分:3)

run_canvas方法可能异步执行其动画代码,但是在动画开始后立即执行将animating属性设置为false的语句。您需要在run_canvas方法完成动画时将属性设置为false,或者在完成时触发事件并在事件处理程序中设置属性。