2017-10-14 181 views
-2

UPDATE:jQuery:如何将值从一个函数传递给另一个?

这里是什么,我想弄清楚(见注释的问题)的简化版本:

 $("document").ready(function() { 
     $("#startDate").datepicker({ 

      onSelect: function(dateText, inst) { 
       var dateAsObject = $(this).datepicker('getDate'); 
       var timestamp = dateAsObject.getTime(); // the timestamp of the date picked by user 
      } 
     }); 

     // how do I get the value of timestamp to show up here? 
     // It also needs to update every time onSelect changes the value. 
     alert(timestamp); 

    }); 

+0

你不需要有两个'$(document).ready(function(){})'fucntions。把你想要的所有功能放在一个里面。 – VTodorov

+0

jquery中的函数只是javascript函数。 Jquery只是一堆语法糖,可以让你的事情变得简单一些。你准备好的事件处理程序就是这样。它们在页面加载时处理,并被称为先来先服务。在你的第一个准备好的处理程序中,你正在设置一个日期选择器,第二个你正在设置一个时钟。你究竟想要做什么? – scrappedcola

+0

是的,我知道我不需要2 document.ready,但如果我把它们放入一个它不起作用。 – WebDevBooster

回答

1

由于这是一个异步流程,您必须使用事件。

像这样的事情或许应该工作:

$("document").ready(function() { 

    function setClock(startTime) { 
     return $('.clock').FlipClock(
      (new Date()).getTime()/1000 - startTime, 
      { 
       clockFace: 'DailyCounter' 
      } 
     ); 
    } 


    $("#startDate").datepicker({ 

     // ... all your (here irrelevant) options ... 

     onSelect: function(dateText, inst) { 
      // I assume this is an event handler that gets called every time your date changes. 
      // Here you have to update the timestamp on your second plugin. 
      setClock($(this).datepicker('getDate').getTime()); 
    }); 

    // initiate the clock 
    setClock((new Date(2017, 8, 11)).getTime()); 

}); 

所以首先我声明,可以设置时钟所提供的最新功能。然后我设置了日期选择器,并且它(假定)更改处理程序,我告诉它用新选择的日期更新时钟。最后,我启动时钟,以便在用户选择日期之前它已经显示了一些东西(您应该使用与datepicker相同的日期作为起始值)。

理想情况下,您将更新时钟而不是重新启动它,但我不知道插件API支持这一点。我不知道这是否有效,因为我不知道实际的插件,无法测试。我希望它能指出你正确的方向。随意问问,如果有什么不清楚!

+0

嗯...我需要以相反的方式做到这一点。只有当/当用户输入日期(通过日期选择器)时,应该启动时钟。这也意味着对输入/日期选择器的每次更改都会自动从用户输入中启动一个具有正确值的全新时钟。 – WebDevBooster

+0

因此,我的硬编码日期应该被忽略。这来自不同的项目。对困惑感到抱歉。 – WebDevBooster

+0

只是跳过最后一行然后,不要在页面加载启动,只在事件处理程序 – Pevara

-1

如果这两个功能都可以同一个文件直接使用全局定义的变量 var timestamp。 如果您从单独的文件中调用,则可以使用<script >标记调用其他文件中的变量。

+0

您没有考虑到异步流程。此外,建议一个全球性的解决方案,真的...... – Pevara

+0

我张贴在这里之前,当然已经尝试过(除其他事项外)。这没有用。 – WebDevBooster

+0

@Pevara是的,我也认为让它成为全球并不是一个好主意。 (尽管我已经试过了,但无法让它工作) – WebDevBooster

相关问题