Javascript 在函数z中访问函数x内的变量

Javascript 在函数z中访问函数x内的变量,javascript,jquery,Javascript,Jquery,我有一个页面,其中DOM元素存储在变量中,在它自己的函数中,我可以引用这个变量来更改它。但是,在其他功能中,我无法做到这一点。。 如何从第二个函数访问DOMtime 需要注意的是,第一个函数总是在第二个函数之前调用,因此DOMtime总是准备就绪 $('.page').on("click", '.button', function () { var DOMtime = $(this).parent().siblings().find('span.time')[0]; $(DOMt

我有一个页面,其中DOM元素存储在变量中,在它自己的函数中,我可以引用这个变量来更改它。但是,在其他功能中,我无法做到这一点。。 如何从第二个函数访问DOMtime

需要注意的是,第一个函数总是在第二个函数之前调用,因此
DOMtime
总是准备就绪

$('.page').on("click", '.button', function () {
    var DOMtime = $(this).parent().siblings().find('span.time')[0];
    $(DOMtime).text("test");

});
$('.modal').on("click", '.save', function () {

    $(DOMtime).text("another test");

您应该使用一个全局变量来访问DOMtime。首先尝试将其定义为全局变量

为什么不这样做呢

$(function() {

    var DOMtime = $(this).parent().siblings().find('span.time')[0];

    $('.page').on("click", '.button1', function() {

        DOMtime.text("test");

    });

    $('.modal').on("click", '.button2', function() {

        DOMtime.text("another test");

    });

});
这与作用域和闭包有关。总体思路是,您需要
var
在祖先范围内共享什么

var foo; // variable to share
function a() {
    foo = 1;
}
function b() {
    return foo;
}
a();
b(); // 1
如果您不想污染您正在使用的名称空间,您可以使用iLife,但请记住
从中返回您想要的东西,以便它们继续存在/可引用

var something = (function () { // IIFE starts, contents in own namespace
    var x = false; // this won't be referenceable outside the IIFE
    function something() { // some function
        return x = !x;
    }
    return something; // now return it so it can exist outside the IIFE
}()); // invoke IIFE
something(); // true
something(); // false
something(); // true
// but
x; // undefined (or ReferenceError in strict mode)

只需在上面的范围中声明它

var DOMTime;

$('.page').on("click", '.button1', function () {
    DOMtime = $(this).parent().siblings().find('span.time')[0];
    $(DOMtime).text("test");

});
$('.modal').on("click", '.button2', function () {

    $(DOMtime).text("another test");

请注意,如果在.button2之前触发了单击,则.button1
DOMTime
仍将是
未定义的

您可以分配一个全局变量来访问其他选项中的任何位置:

var globalvar = "";
$('.page').on("click", '.button1', function () {
    var DOMtime = $(this).parent().siblings().find('span.time')[0];
    $(DOMtime).text("test");
    globalvar = $(this);

});
$('.modal').on("click", '.button2', function () {

    $(DOMtime).text("another test");
    alert(globalvar);
 }

然后您就可以在任何地方获取dometime变量;)

因为
this
与事件的
this
不匹配,所以第二行
this
指的是他们单击的行。按钮1。。(对不起,我应该提到有多个按钮)[我会更改它]。