Javascript &引用;未捕获引用错误:未定义自动调整大小“;

Javascript &引用;未捕获引用错误:未定义自动调整大小“;,javascript,Javascript,下面是我的Javascript文档,它在$(document.ready()中运行。Javascript是从我的站点的页脚加载的。为了简化,我将[…]替换为不相关的代码 // When the document is ready, run the display scripts $(document).ready(function() { // Define the frame height functions function getDocHeight(doc) { [...] }

下面是我的Javascript文档,它在
$(document.ready()
中运行。Javascript是从我的站点的页脚加载的。为了简化,我将
[…]
替换为不相关的代码

// When the document is ready, run the display scripts
$(document).ready(function() {

// Define the frame height functions
function getDocHeight(doc) {
    [...]
}
document.domain = 'mysite.com';

function resizeIframe() {setIframeHeight('date-price-book');}

function setIframeHeight(ifrm) {
    [...]
}

function AutoResize() {
    resizeIframe();
    resizeIframe();
    setTimeout("AutoResize()", 500);
}

AutoResize();

[... more Javascript code...]
当我运行页面时,我得到一个错误:
uncaughtreferenceerror:AutoResize()未定义

我可以通过注释掉
AutoResize()行来阻止此错误的发生(上面我的示例代码的最后一行)。但是为什么会抛出这个错误呢?当然,AutoResize()函数刚刚在它上面的几行中定义过

谢谢你的帮助

setTimeout("AutoResize()", 500);
当执行上面的setTimeout时,它将在全局范围内评估字符串。AutoResize()隐藏在闭包中,因此找不到它

使用名称为函数指定引用

setTimeout(AutoResize, 500);
另一个选择是关闭

setTimeout(function() { AutoResize(); }, 500);
如果要向函数发送参数,可以使用闭包方法

当执行上面的setTimeout时,它将在全局范围内评估字符串。AutoResize()隐藏在闭包中,因此找不到它

使用名称为函数指定引用

setTimeout(AutoResize, 500);
另一个选择是关闭

setTimeout(function() { AutoResize(); }, 500);

如果要向函数发送参数,可以使用闭包方法

因为您正在
$(document.ready(function(){…})中定义
自动调整大小
闭包,它不是全局可用的(这很好)


调用
setTimeout
时使用字符串而不是函数引用时(这是错误的),假设字符串将解析为的函数调用是全局可用的(因为
setTimeout
窗口中运行
/global scope).

因为您正在
$(文档)中定义
自动调整大小闭包,它不是全局可用的(这很好)


调用
setTimeout
时,如果使用字符串而不是函数引用(这是错误的),则会假设字符串将解析为的函数调用是全局可用的(因为
setTimeout
窗口中运行
/global scope)。

我不确定。当我尝试这一部分时,它起作用了

function AutoResize(){      
    console.log('test');
    setTimeout('AutoResize()',1000);
}
AutoResize();

也许是别的地方出了问题。

我不确定。当我尝试这一部分时,它起作用了

function AutoResize(){      
    console.log('test');
    setTimeout('AutoResize()',1000);
}
AutoResize();

可能是其他地方出了问题。

setTimeout(AutoResize,500)
更好,可能会解决您的启动问题。
setTimeout(AutoResize,500)
更好,可能会解决您的启动问题。啊,我明白了。我应该是那个问编程问题的人。但是stackoverflow不让我,因为他们认为我太蠢了,不会问问题。但他们认为我很聪明,可以回答问题。所以这是件好事。啊,你抓住我了。我应该是那个问编程问题的人。但是stackoverflow不让我,因为他们认为我太蠢了,不会问问题。但他们认为我很聪明,可以回答问题。所以这是件好事。