我有一个页面,其中DOM元素存储在变量中,在它自己的函数中我可以引用此var来更改它。但是在其他功能中,我无法做到这一点.. 如何从第二个函数访问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");
答案 0 :(得分:0)
您应该使用全局变量来访问DOMtime。尝试首先将其定义为全局变量
答案 1 :(得分:0)
为什么不做这样的事呢?
$(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");
});
});
答案 2 :(得分:0)
这与范围和闭包有关。一般的想法是,您需要var
想要在祖先范围内分享的内容;
var foo; // variable to share
function a() {
foo = 1;
}
function b() {
return foo;
}
a();
b(); // 1
如果您不想污染您正在使用的命名空间,可以使用 IIFE ,但请记住return
您想要的内容,以便继续存在/可引用;
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)
答案 3 :(得分:0)
只需在上限范围内声明它
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
仍然是undefined
。
答案 4 :(得分:0)
您可以指定一个全局变量,以便在其他功能的任何位置访问它:
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变量;)