这是我的代码:
$(document).ready(function() {
var interval = setInterval("change_height()", 500);
var height;
function change_height() {
height = parseInt(window.location.hash);
$('#message_body').height(height);
alert("");
clearInterval(interval);
}
});
由于某种原因,只是没有调用change_height()函数但是如果我将它放在document.ready块之外但是然后clearInterval不起作用它会起作用!
任何帮助都非常感激。
由于
答案 0 :(得分:2)
setInterval是一个原生的javascript函数,而不是jQuery函数。
清除后,尝试直接使用以下方式引用该功能:
var interval = setInterval(change_height, 500);
// Note the lack of () which would execute the function
这比让setInterval函数解释字符串更好。
答案 1 :(得分:1)
$(document).ready(function() {
var interval = setInterval(function() { change_height(); }, 500);
var height;
function change_height() {
height = parseInt(window.location.hash);
$('#message_body').height(height);
alert("");
clearInterval(interval);
}
});
答案 2 :(得分:1)
不要将字符串传递给setInterval,传递函数引用:
$(document).ready(function() {
var interval;
var height;
function change_height() {
height = parseInt(window.location.hash);
$('#message_body').height(height);
alert("");
clearInterval(interval);
}
interval = setInterval(change_height, 500);
});
答案 3 :(得分:0)
试试这段代码示例:
var intervalId;
$(document).ready(function () {
intervalId = window.setInterval('sample.func1();', 500);
});
var sample = {
func1: function () {
alert('test 1');
window.clearInterval(intervalId);
}
}
答案 4 :(得分:0)
您有两个选择:
1)从setInterval
:
setInterval(change_height, 500);
OR 2)将您的函数声明为全局:
window.change_height = function() {
height = parseInt(window.location.hash);
$('#message_body').height(height);
alert("");
clearInterval(interval);
}
这是因为当您使用"change_height()"
时,setInterval
正在查找全局函数,但您的函数是本地函数。
希望这会有所帮助。干杯
答案 5 :(得分:0)
使用settimeout。因为无论代码完成,setinterval都会执行。 并从函数的最后一行调用settimeout。
setTimeOut("change_height", 500);