Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery:如何将值从一个函数传递到另一个函数?_Jquery - Fatal编程技术网

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

jQuery:如何将值从一个函数传递到另一个函数?,jquery,Jquery,更新: 下面是我想弄明白的一个简化版本(见评论中的问题): 如果两个函数位于同一个文件中,则可以直接使用变量 var时间戳,因为它是全局定义的。 如果从单独的文件调用,可以使用标记调用其他文件中的变量。因为这是一个异步流,所以必须处理事件 类似这样的方法可能会奏效: $("document").ready(function() { function setClock(startTime) { return $('.clock').FlipClock(

更新:

下面是我想弄明白的一个简化版本(见评论中的问题):



如果两个函数位于同一个文件中,则可以直接使用变量
var时间戳
,因为它是全局定义的。
如果从单独的文件调用,可以使用
标记调用其他文件中的变量。

因为这是一个异步流,所以必须处理事件

类似这样的方法可能会奏效:

$("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是否支持这一点。我不知道这些是否真的有效,因为我不知道实际的插件,也没有办法测试。但我希望它能为你指明正确的方向。如果有任何不清楚的地方,请随时询问

您不需要有两个`$(document).ready(function(){})`函数。将所有需要的功能放在一个函数中。jquery中的函数只是javascript函数。Jquery只是一堆语法糖,当涉及到事件时,它会让您的生活变得更轻松。您的就绪事件处理程序就是这样。当页面加载时,他们会处理,并被称为先到先得服务。在第一个就绪处理程序中,您正在设置日期选择器,第二个是设置时钟。你到底想做什么?是的,我知道我不需要2个document.ready,但如果我把它们放在一个document.ready中,它就不起作用了。我想你应该用第一个datepicker插件选择一个日期(时间戳),然后在第二个插件中使用该值。但是你想用它来做什么,currentDate,pastDate,还是别的什么?另外,当用户尚未选择任何内容时,您希望如何处理此值?那么第二个插件的初始状态是什么呢?如果日期选择器发生更改,它是否应该更新?你看,有很多事情需要考虑…如上所述,我需要将“timestamp”传递给另一个函数,也就是说,我需要将“pastDate.getTime()”替换为“timestamp”的值。你没有考虑异步流。另外,建议一个全球性的解决方案,真的……在这里发布之前,我当然已经尝试过了。“那不管用。”佩瓦拉:是的,我还认为让它全球化不是个好主意。(尽管我已经试过了,但还是没能成功)嗯。。。我需要用另一种方法。只有当用户输入日期(通过datepicker)时,时钟才会启动。这也会自动意味着对输入/日期选择器的每一次更改都会启动一个全新的时钟,该时钟具有用户输入的正确值。因此,我的硬编码日期应该被忽略。这是一个不同的项目。抱歉造成混淆。请跳过最后一行,不要在页面加载时启动,仅在事件handlerhm中启动。。这对我来说真的不管用。我刚刚用我想弄明白的简化版本更新了我的问题。你仍然没有考虑异步流。在您提醒时间戳时,用户尚未选择日期,因此您可能会得到一个未定义的
。您确实需要将该逻辑放入onSelect函数中。请随意设置一个工作小提琴与你到目前为止,我会很高兴地告诉你如何让它工作。
$("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());

});