让我从这里开始。在w3cshools.com-http://www.w3schools.com/jsref/met_win_setinterval.asp-他们有一个代码段演示了如何使用javascript setInterval函数(令人惊讶的是它有一个不匹配的,但仅此而已)。我需要使用setInterval(),有时我喜欢引用一些“标准”正文来了解推荐的用法。在我的开发环境中,当我在jQuery上使用setInterval()行为/工作时,似乎似乎无法解决问题。 $(document).ready(function(){...}); 块。 插图1-工作:典型/传统块<script type="text/javascript"> var refreshIntervalId; function testMessage() { window.alert("Hello"); } refreshIntervalId = setInterval("testMessage()", 5000);</script> 插图2-不起作用: jQuery块<script type="text/javascript"> $(document).ready(function() { var refreshIntervalId; function testMessage() { window.alert("Hello"); } refreshIntervalId = setInterval("testMessage()", 5000); });</script> 插图3-工作:jQuery块-使用setInterval(testMessage,5000)代替setInterval(“testMessage()”,5000)<script type="text/javascript"> $(document).ready(function() { var refreshIntervalId; function testMessage() { window.alert("Hello"); } refreshIntervalId = setInterval(testMessage, 5000); });</script>事实证明,如果我尝试使用 $(document).ready(function(){});作为字符串传递函数, 块,我收到一条错误消息,指示未定义函数。只是为了避免出现IE,Chrome和Firefox浏览器都报告错误的情况: IE :Microsoft JScript运行时错误:属性“testMessage”的值为null或未定义,不是Function对象 Chrome :未捕获的ReferenceError:未定义testMessage(匿名函数) Firefox :未定义testMessage。我想发现的(可能的话)可能是由于标准不符合导致的,还是当我尝试从jQuery块中使用 setInterval(“testMessage()”,5000)时出了什么问题? ?可能会发生一些困惑,或者这是正确的行为吗? 最佳答案 setTimeout和setInterval打破了范围,因此它在寻找testMessage时找不到它(因为该函数的范围在传递给ready的匿名函数内)。浏览器的行为正确。这是您永远不要使用字符串格式的原因之一……或者尝试向可怕的W3Schools学习。关于javascript - $(document).ready(function(){…})中的setInterval奇数(buggy?)行为。块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8061999/
10-11 20:00