//**************************************************************** // Newsticker // // Copyright by DataFlash, www.dataflash.at, 2008 //**************************************************************** var tickerDelay = 4000; // in milliseconds var slideSpeed = 100; // in milliseconds var slideStartTop = 100; // where new item should start to slide // MUST BE divideable by 'slideAmount' !!!! var slideAmount = 4; // how far should nesItems slide up var arrNews = new Array(); var sequence = 1; var currNewsItem = null; var newNewsItem = null; //---------------------------------------------- //---------------------------------------------- function initNews() { // alle
mit id='newsItemX' in Array var i = 0; for (i=1; i<100; i++) { var newsItem = document.getElementById("newsItem"+i); if(newsItem == null) { break; } else { arrNews[i] = newsItem; } } // keine newsItems vorhanden => raus! if (arrNews.length == 0) { return false; } // Anzeige des 1. newsItems currNewsItem = arrNews[sequence]; currNewsItem.style.visibility = 'visible'; currNewsItem.style.position = 'absolute'; currNewsItem.style.top = '0px'; // Eigenart von JavaScript Arrays? // Wenn 1 newsItem im Array vorhanden ist, zeigt JS für arrNews.lengt = 2 an! // => nur wenn mehr als 1 newsItem vorhanden ist, lösen wir den scroller/slider aus if (arrNews.length > 2) { setTimeout(showNewsItem, tickerDelay); } } //---------------------------------------------- //---------------------------------------------- function showNewsItem() { // aktuell angezeigten newsItem setzen currNewsItem = arrNews[sequence]; // sequence um 1 erhöhen sequence++; // prüfen, ob es einen newsItem mit der erhöhten sequence gibt // wenn nein, sequence auf 1 zurücksetzen. if (arrNews[sequence] == null) { sequence = 1; } // neu anzuzeigenden newsItem setzen newNewsItem = arrNews[sequence]; // neuen newsItem einsliden, während alter newsItem hinaus slided slideNewsItems(); } //---------------------------------------------- //---------------------------------------------- function slideNewsItems() { newNewsItem.style.visibility = 'visible'; newNewsItem.style.position = 'absolute'; newNewsItem.style.top = slideStartTop + 'px'; moveNewsItems(); } //---------------------------------------------- //---------------------------------------------- function moveNewsItems() { // aktuelle Position des neuen Items posNewTop = newNewsItem.style.top; posNewTop = posNewTop.replace(/px/, ""); // aktuelle Position des aktuellen Items posCurrTop = currNewsItem.style.top; posCurrTop = posCurrTop.replace(/px/, ""); if ((posNewTop == 0) || (posNewTop < 0)) { // Timer für Anzeige des nächsten newsItem starten currNewsItem.style.visibility = 'hidden'; setTimeout(showNewsItem, tickerDelay); } else { newNewsItem.style.top = (posNewTop - slideAmount) + 'px'; currNewsItem.style.top = (posCurrTop - slideAmount) + 'px'; setTimeout(moveNewsItems, slideSpeed); } }