好吧,我似乎有問題。我試圖創建一個twicker來顯示數據行。我使用jQuery/JavaScript在一定時間後隱藏和顯示行。下面的代碼:javascript setTimeOut - 沒有在嵌套setTimeout上運行
<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
</head>
<body>
<script>
var timer_is_on=0;
function doTimer()
{
if (!timer_is_on)
{
timer_is_on=1;
t=setTimeout("timedCount()",5000);
}
}
function hide(hideMe) {
var elem='';
elem = elem.concat("#").concat(hideMe);
$(elem).filter(":visible").hide("slow");
}
function show(showMe) {
var elem='';
elem = elem.concat("#").concat(showMe);
$(elem).show("slow");
}
function timedCount() {
$(document).ready(function() {
if($("#twitRow1").is(":visible")){
var th1 = setTimeout(function() {hide("twitRow1")},1000);
var ts1 = setTimeout(function() {show("twitRow2")},1000);
} else if($("#twitRow2").is(":visible")){
var th2 = setTimeout(function() {hide("twitRow2")},1000);
var ts2 = setTimeout(function() {show("twitRow3")},1000);
} else if($("#twitRow3").is(":visible")){
var th3 = setTimeout(function() {hide("twitRow3")},1000);
var ts3 = setTimeout(function() {show("twitRow4")},1000);
} else if($("#twitRow4").is(":visible")){
var th4 = setTimeout(function() {hide("twitRow4")},1000);
var ts4 = setTimeout(function() {show("twitRow5")},1000);
} else if($("#twitRow5").is(":visible")){
var th5 = setTimeout(function() {hide("twitRow5")},1000);
var ts5 = setTimeout(function() {show("twitRow6")},1000);
} else if($("#twitRow6").is(":visible")){
var th6 = setTimeout(function() {hide("twitRow6")},1000);
var ts6 = setTimeout(function() {show("twitRow7")},1000);
} else if($("#twitRow7").is(":visible")){
var th7 = setTimeout(function() {hide("twitRow7")},1000);
var ts7 = setTimeout(function() {show("twitRow8")},1000);
} else if($("#twitRow8").is(":visible")){
var th8 = setTimeout(function() {hide("twitRow8")},1000);
var ts8 = setTimeout(function() {show("twitRow9")},1000);
} else if($("#twitRow9").is(":visible")){
var th9 = setTimeout(function() {hide("twitRow9")},1000);
var ts9 = setTimeout(function() {show("twitRow1")},1000);
}
});
t=setTimeout("timedCount()",5000);
}
</script>
<div id="myDivTable">
<div id="twitRow1">Row 1</div>
<div id="twitRow2" style="display: none;">Row 2</div>
<div id="twitRow3" style="display: none;">Row 3</div>
<div id="twitRow4" style="display: none;">Row 4</div>
<div id="twitRow5" style="display: none;">Row 5</div>
<div id="twitRow6" style="display: none;">Row 6</div>
<div id="twitRow7" style="display: none;">Row 7</div>
<div id="twitRow8" style="display: none;">Row 8</div>
<div id="twitRow9" style="display: none;">Row 9</div>
</div>
<script>
doTimer();
</script>
</body>
</html>
現在對於這部作品的大部分,它隱藏行和顯示正確的參數和循環周圍就好了。我遇到的問題是setTimeout正在執行hide,然後show實際上並沒有運行。表演和隱藏正在運行,但是一個接一個,他們之間沒有1秒的停頓。
任何人都知道這裏發生了什麼?
的Syn
除了你的問題,這個大的if/else塊看起來好像可以做得更好 – jochil 2009-10-23 10:52:03
我使用PHP來生成代碼塊,取決於有多少行,等等。 – SynackSA 2009-10-23 10:58:46