正如其他人所提到的,你在兩個地方(在for
事後和在循環體內)增加了i
,因此刪除主體分配是第一個要修復的部分。另外,原始HTML不會被「放回」。
但是,這不是主要問題。 JavaScript正在執行循環(兩次),所以全部 fadeOut/fadeIn函數分別在2000/2400毫秒後執行,而不是在超時後執行。您可以在演示中輸入console.log(i);
或alert(i);
來代替i++
,並在頁面加載完成後立即看到3條日誌行/警報。
我會將標記置爲HTML,而不是在JavaScript中創建標記,然後在2個HTML片段之間淡出,例如參見demo或以下示例代碼。
HTML
<div id="footer-address">
<span><strong>We have moved!</strong> Our new address is:</span>
<span><strong>Our Place</strong> New Address Location</span>
</div>
CSS
#footer-address {
margin-bottom: 2px;
text-transform: uppercase;
margin: 0;
padding: 0;
font-family: Arial,Helvetica,sans-serif;
font-size: 10px;
}
#footer-address span:last-child {
display:none;
}
的JavaScript(需要的jQuery)
var $footer = $('#footer-address');
var i = 0;
(function swap(){
var $hiddenSpan = $footer.find('span:hidden')
$footer.find('span:visible').fadeOut(400, function() {
$hiddenSpan.fadeIn(400)
})
if (i++ < 3) setTimeout(swap, 2000)
})();
的JavaSc ript使用自我執行功能(見http://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/),每2秒間隔運行3次。我還利用jQuery .fadeOut()
函數的回調(秒)參數,以便在之後啓動.fadeIn()
fadeOut完成。
我相信這裏有改進的空間,但希望它仍然有用。
2我看到的東西......你正在遞增'i'兩次,並且你沒有在任何時候返回'$('#footer-address')。html()'到它的原始狀態。 – isherwood 2013-02-26 17:14:02