如何在另一个函数的范围内杀死js函数

时间:2013-03-20 03:49:38

标签: javascript ajax

我为我的表单提交构建了please wait gif动画师,因为注册需要更多​​时间。

现在一切正常,但我的gif动画即使在成功消息后仍然保持运行。因此我的动画功能仍在运行。我该如何杀死这个功能?

这就是我现在所做的:

function loadSubmit(){
  ProgressImage = document.getElementById('progress_image');
  document.getElementById("progress").style.visibility = "visible";
  setTimeout("ProgressImage.src = ProgressImage.src",100);
  return true;
}

我在我的ajax函数之前调用它:

 loadSubmit();
 $.ajax({
   url: "/register_me/",
   type: "POST",
   ...
 }).done(function(){
      // can i somehow kill loadSubmit() function in this scope? 
 });

能够做到这一点真是太好了..

非常感谢

1 个答案:

答案 0 :(得分:2)

setTimeout返回一个整数值,然后可以使用函数clearTimeout

清除该超时
function loadSubmit(){
   ProgressImage = document.getElementById('progress_image');
   document.getElementById("progress").style.visibility = "visible";
   // what exactly you want you achieve through this timeout
   return setTimeout("ProgressImage.src = ProgressImage.src",100);

}

var intervalID = loadSubmit();
$.ajax({
  url: "/register_me/",
  type: "POST",
  ...
}).done(function(){
   document.getElementById("progress").style.display = "none"; //EDIT
   clearTimeout(intervalID)
});

在MDN上阅读setTimout的文档 https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout

编辑:我误解了这个问题。你需要隐藏ProgressImage以隐藏gif,你仍然需要清除超时。