在脚本中执行另一个脚本中的函数



我的页面正文中运行了两个脚本。当按下键盘上的"a"时,将运行另一个脚本。我如何添加一些延迟,然后再次触发第一个脚本?我已经尝试了下面的代码,它不工作。最好,我也想取消第二个脚本开头的第一个超时。

 <script id="source" language="javascript" type="text/javascript">
$(function (){
  function reloading(){
      $.ajax({                                      
      url: 'api.php',                    
      data: "",                      
      dataType: 'json',             
      success: function(data)        
      {
        var id = data[0];             
          _id = id;
        var vname = data[1];           
        var message = data[2]; 
        var timestamp = data[3]; 
        var field1 = data[4]; 
        _field1 = field1;
        var val2 = parseInt(field1, 10) ;
        _val2 = val2;
        $('#output').hide().html( message ).fadeIn("slow");   
         $('#username').hide().html( vname +":" ).fadeIn("slow");
      setTimeout(function(){
      reloading();
    }, 60000);
      }
      });
  }
  reloading();
}); 
  </script>
  <script>
  $(document).jkey('a',function() {
     $.post("update.php", { "id": _id} )
      $('#output').hide().html( "<i>Message</i><br> <br>" +_val2 +" additional." ).fadeIn("slow");
      $('#username').fadeOut("fast");
      $('#valg1').fadeOut("fast");
      $('#valg2').fadeOut("fast");
      });
     setTimeout("reloading()",1000); 
</script>

您必须将reloaded()置于全局作用域中才能从另一个脚本访问它。现在它是在一个匿名函数中(这是减轻全局作用域污染的一个hack),但是对于您的情况,如果无法将两个脚本合并为一个,您将不得不污染全局作用域。

如果它是一个一次性函数,给它一个唯一的前缀或其他东西:

myApp_reloaded();

如果你有一堆函数需要在全局作用域中,创建一个包装器对象。你可以使用很多不同的模式,我更喜欢这个…

    function MyApp() {
    }
    MyApp.prototype.reloaded = function () {
     // reload func body here
    }


var myApp = new MyApp();

现在你可以全局访问这些方法了:

myApp.reloaded();

快速破解,直到有人想出一个更优雅的,不会污染全局作用域的

<script id="source" language="javascript" type="text/javascript">
var tId;
function reloading(){
  $.ajax({                                      
    url: 'api.php',                    
    data: "",                      
    dataType: 'json',             
    success: function(data) {
      var id = data[0];             
      _id = id;
      var vname = data[1];           
      var message = data[2]; 
      var timestamp = data[3]; 
      var field1 = data[4]; 
      _field1 = field1;
      var val2 = parseInt(field1, 10) ;
      _val2 = val2;
      $('#output').hide().html( message ).fadeIn("slow");   
      $('#username').hide().html( vname +":" ).fadeIn("slow");
      clearTimeout(tId);
      tId=setTimeout(function(){ reloading();}, 60000);
    }
  });
}
$(function (){
  reloading();
}); 
$(document).jkey('a',function() {
  $.post("update.php", { "id": _id} )
  $('#output').hide().html( "<i>Message</i><br> <br>" +_val2 +" additional." ).fadeIn("slow");
  $('#username').fadeOut("fast");
  $('#valg1').fadeOut("fast");
  $('#valg2').fadeOut("fast");
  clearTimeout(tId);
  tId = setTimeout(function() { reloading()},1000); 
});
</script>

相关内容

  • 没有找到相关文章

最新更新