Javascript 在函数z中访问函数x内的变量
我有一个页面,其中DOM元素存储在变量中,在它自己的函数中,我可以引用这个变量来更改它。但是,在其他功能中,我无法做到这一点。。 如何从第二个函数访问DOMtime 需要注意的是,第一个函数总是在第二个函数之前调用,因此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
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之前触发了单击,则.button1DOMTime
仍将是未定义的
您可以分配一个全局变量来访问其他选项中的任何位置:
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。。(对不起,我应该提到有多个按钮)[我会更改它]。