我使用此javascript代码打开两张图片,并通过单击另一张图片切换垂直菜单。知道我想运行代码而不用点击图像,带有计时器。所以我写了这段代码,但它第一次只运行一次。 我的代码出了什么问题?
<script type="text/javascript">
$(document).ready(function () {
$("#lista2").slideToggle(1);
$curtainopen = false;
$(".rope").click(function () {
$(this).blur();
if ($curtainopen == false) {
var selected = $(this).val();
var image = $(".rope");
image.fadeOut('fast', function () {
$("#largeImg").attr('src', 'images/power-on.png');
image.fadeIn('fast');
});
$(".leftcurtain").stop().animate({ left: '-120px' }, 2000);
$(".rightcurtain").stop().animate({ left: '120px' }, 2000);
$("#R").attr('src', 'images/Right.gif');
$("#L").attr('src', 'images/Left.gif');
$curtainopen = true;
$("#lista2").slideToggle(2000);
$(this).attr('id', '1');
} else {
var selected = $(this).val();
var image = $(".rope");
image.fadeOut('fast', function () {
$("#largeImg").attr('src', 'images/power-off.png');
image.fadeIn('fast');
});
$(".leftcurtain").stop().animate({ left: '0px' }, 2000);
$(".rightcurtain").stop().animate({ left: '0px' }, 2000);
$curtainopen = false;
$("#lista2").hide();
$(this).attr('id', '0');
}
return false;
});
});
function startTimer() {
setTimeout($(".rope").click(), 4000);
}
</script>
答案 0 :(得分:1)
setTimeout
需要一个函数,当你传递$(".rope").click()
时,会立即调用它。
像
一样使用它function startTimer() {
setTimeout(function () {
$(".rope").click();
}, 4000);
}
答案 1 :(得分:1)
使用此命令在特定时间间隔后执行代码
setInterval(function() {
$(".rope").click(); // this will execute after every 4 sec.
}, 4000);
使用此命令在特定时间延迟后执行代码
setTimeout(function() {
$(".rope").click(); // this will execute after 4 sec delay only once.
}, 4000);
根据您的要求使用上面
答案 2 :(得分:0)
setTimeout(function() {
$(".rope").click();
}, 4000);
因为setTimeout
需要一个函数,但$(".rope").click()
立即调用自身(而不是指定要调用的函数)。因此,您不希望调用一个函数,而是将其传递给setTimeout
。
答案 3 :(得分:0)
计时器意味着在每次超时后重复该功能。 setTimeOut只延迟一次函数(在给定时间之后,以毫秒为单位)。
function startTimer() {
//do your stuff
$(".rope").click();
//repeats itself after 4 seconds
setTimeout(startTimer, 4000);
}
不要忘记在准备好文件时启动它:
$(document).ready(function () {
startTimer();
...
}
我不希望在页面加载时立即调用你的函数,你可以添加一个初始延迟:
$(document).ready(function () {
setTimeout(startTimer, 5000); //the timer will start only 5 seconds after page load
...
}