setTimeout堆栈溢出流

时间:2010-05-19 08:58:14

标签: jquery

  

              setTimeout堆栈溢出..                                     $(文件)。就绪(函数(){                   counterFN();

            var theCounter = 1;
            function counterFN()
            {
                $(".searchInput").val(theCounter);
                theCounter++;
                setTimeout(counterFN(),1000);    
            }

        });        
    </script>
</head>
<body>
    <input type="text" class="searchInput" />
</body> </html>

2 个答案:

答案 0 :(得分:4)

您正在调用counterFN并将其返回值设置为在1000毫秒后运行。由于您没有返回函数,因此您可能不希望这样做。

你可能想要:

            setTimeout(counterFN,1000);    

更好的是,不要递归,并对不会改变的事情做更多的缓存:

        var theCounter = 1;
        var input = $(".searchInput"); // Cache this
        function counterFN()
        {
            input.val(theCounter);
            theCounter++;
        }
        setInterval(counterFN, 1000);

答案 1 :(得分:1)

改变这个......

setTimeout(counterFN(),1000);

到此:

setTimeout(counterFN,1000);

否则,您尝试调用counterFN并为返回设置超时,而不是为函数本身设置超时 - 但是因为它在返回之前尝试调用自身(在原始代码中),这会产生无限循环的调用,导致堆栈溢出。

相关问题