Javascript:设置超时问题
当我开始我的脚本时,我有这个:
var my_great_masterpiece = new function ()
{
var self = this;
然后在我的脚本中我有这个:
response_xml: function ()
{
if (self.http_request.readyState == 4)
{
if (self.http_request.status == 404 && countXmlUrl <= 3)
{
countXmlUrl++;
self.realXmlUrl = xmlUrl[countXmlUrl];
self.request_xml();
}
if (self.http_request.status == 200)
{
self.xmlDoc = self.http_request.responseXML;
self.storage.setItem('domains_raw_xml', self.http_request.responseText);
self.main.peter_save_data();
self.timervar = setTimeout(function ()
{
// ########### Below line gives the error #############################
self.new_version_show_window();
}, 2000);
}
}
},
new_version_show_window: function ()
{
...
}
我收到的错误是:
错误:self.new_version_show_window 是 不是一个函数
我做错了什么?
谢谢!
When I start my script I have this:
var my_great_masterpiece = new function ()
{
var self = this;
Then later in my script I have this:
response_xml: function ()
{
if (self.http_request.readyState == 4)
{
if (self.http_request.status == 404 && countXmlUrl <= 3)
{
countXmlUrl++;
self.realXmlUrl = xmlUrl[countXmlUrl];
self.request_xml();
}
if (self.http_request.status == 200)
{
self.xmlDoc = self.http_request.responseXML;
self.storage.setItem('domains_raw_xml', self.http_request.responseText);
self.main.peter_save_data();
self.timervar = setTimeout(function ()
{
// ########### Below line gives the error #############################
self.new_version_show_window();
}, 2000);
}
}
},
new_version_show_window: function ()
{
...
}
the error that I am getting is:
Error: self.new_version_show_window is
not a function
What am I doing wrong?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从您的代码中不清楚
new_version_show_window
的定义位置。也许你可以在 self:上明确定义它。或者您可以在本地命名空间中定义它并直接在 setTimeout 调用中使用它:
或者简单地:
因为 closure ,在外部函数中声明的变量在内部函数中也可用。
编辑
感谢您发布整个代码。
new_version_show_window
是在this.main
上定义的,因此您必须这样访问它:It is unclear from your code where
new_version_show_window
is defined. Maybe you could explicitly define it on self:instead. Or you could define it in the local namespace and use it directly in the setTimeout call:
or simply:
Because of closure, the variables declared in the outer function is also available in the inner function.
Edit
Thanks for posting the entire code.
new_version_show_window
is defined onthis.main
, so you must access it thusly:self
可能是 JavaScript [1] 中的保留字。这可能会给您带来一些问题,因此请尝试将变量命名为不同的名称。[1] http://www.quackit.com/javascript/javascript_reserved_words.cfm
It could be that
self
is a reserved word in JavaScript [1]. This could be causing you some problems so try naming the variable something different to start with.[1] http://www.quackit.com/javascript/javascript_reserved_words.cfm
这是一个范围问题。 new_version_show_window 仅在调用它的构造的范围内(显然是某种 jQuery AJAX 函数)。仅当您在其当前存在的有限范围之外定义它时,它才可用于
my_great_masterpiece
。This is a problem of scope. new_version_show_window is only in scope in the construct in which is it called ( apparently a jQuery AJAX function of some sort). It will only be available to
my_great_masterpiece
if you define it outside the limited scope in which it now exists.