gpt4 book ai didi

JavaScript 范围问题

转载 作者:行者123 更新时间:2023-11-28 21:23:14 25 4
gpt4 key购买 nike

我正在尝试构建一个通用的ajax加载器,而ajax正在运行一个灯箱,并将显示动画“加载”gif。

我在范围界定方面遇到一些问题。

代码是:

var t=setTimeout( "s.d.dialog( 'destroy' )" ,(s.o.msgTime*1000));

错误是:“ Uncaught ReferenceError :s未定义”

;(function ($) { 
$.loader = function (data, options) {
return $.loader.impl.init(data, options);
};

$.loader.close = function (data) {
$.loader.impl.close(data);
};

$.loader.create = function () {
$.loader.impl.create();
};

$.loader.defaults = {
appendTo: 'body',
autoCreate: true,
msgTime: 5,
};

$.loader.impl = {
d: {},
init: function(data, options){

var s = this;
s.o = $.extend({}, $.loader.defaults, options);

if ((typeof data === 'object')&&!(data instanceof jQuery)&&data.url) {

data.success = function(data, textStatus, jqXHR){ $.loader.close(); }
data.error = function(jqXHR, textStatus, errorThrown){ $.loader.close('Error accessing server'); }
$.ajax(data);
}else if(s.o.autoCreate){
s.create();
}

return s;
},
create: function() {
var s = this;
s.d = $('<div id="dialog" style="display:hidden"><span style="width: 100%" id="loading_diag"><center><img src="http://www.mydomain.com/images/ajax-loader.gif" /></center></span></div>').appendTo(s.o.appendTo);
s.d.dialog({ title: 'Loading ...', dialogClass: 'noTitleStuff', modal: true, draggable: false, resizable: false });

},
close: function(data)
{
var s = this;
//alert(typeof s.d);
if ((typeof data === 'string')&&data) {
$("#loading_diag").hide();
$("#dialog").html(data);

var t=setTimeout( "s.d.dialog( 'destroy' )" ,(s.o.msgTime*1000));
}else{
s.d.dialog( "destroy" );
}

s.d= {};
},
};

})(jQuery);

如果有人知道如何解决,请分享。

第一个和第二个解决方案做了一些事情,但还没有完全修复它,现在我收到一个不同的错误:“Uncaught TypeError: Object # has no method 'dialog' $.loader.impl.close.s.d”

最佳答案

这将使它工作:

var t = setTimeout(function() { s.d.dialog('destroy'); }, s.o.msgTime * 1000);

当您将字符串传递给 setTimout 时,该字符串(代码)将在全局代码中执行 - 并且由于 s 是局部变量,因此它确实没有在全局代码。

关于JavaScript 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com