Dieter Raber: wechselnde anzeige im fixen bereich

Beitrag lesen

Hallo Mathias,

Erstmal ein paar Randbemerkungen:

einen fixen bereich namens .top_container
<div class="top_container">
.top_container

Erstmal waerest Du hier mit einer Id besser bedient, insbesondere mit Hinblick auf Javascript, das waere dann so:
HTML: <div id="top_container">
CSS:  #top_container

<script type="text/javascript" language="JavaScript">

Das Language-Attribut ist veraltet, nimm  <script type="text/javascript"> stattdessen.

function warten(prmSec)

macht in diesem Zusammenhang etwa das, was setInterval() macht, man kann sie also einsparen.

function warten10() {
warten(10);

deutet irgendwie daraufhin, dass es auch eine Funktion warten5() und warten17½() gibt. warten() an sich nimmt aber schon die Zeit als Argument, also koennte man warten10() getrost loeschen und warten(zeit_in_sekunden) direkt aufrufen. Das nur als allgemeine Erklaerung zum Umgang mit Funktionen, denn warten() existiert ja nicht mehr.

Nun zu deinem konkreten Problem. Du hast ja nur eine sehr begrenzte Anzahl von Datenaetzen, naemlich zwei. Wenn das so bleiben soll, und du deine Seite von Hand pflegst, koenntest du so vorgehen:

HTML

  
<div id="top_container">  
  <div id="block1" class="aktiv">  
    <img src="feuerwerk.gif" alt="" />75 Jahre FC Laubach  
    <img src="feuerwerk.gif" alt="" />  
  </div>  
  <div id="block2">  
    <p>Jubiläums Turnier vom ....</p>  
  </div>  
  <div id="block3">  
    <p>Laber, laber laber ....</p>  
  </div>  
</div>  

Wie du siehst, habe ich pro Meldung einen Container gebaut, diese sind im Moment alle gleichzeitig sichtbar, was dir natuerlich missfallen wird... Zudem sind auch alle Inlinestyles verschwunden, denn all das gehoert in's idealerweise ausgelagerte

CSS

  
#top_container div {  
  display:none;  
}  
#top_container div.aktiv{  
  display:block;  
}  

So, jetzt sind alle ausser dem ersten verborgen.

mittels write.document{"..."} bekomm ich des irgendwie nich hin.

Wenn das Dokument geladen ist, hat auch document.write() (write.document() gibt's nicht) seine Schuldigkeit getan. Dann helfen nur noch die DOM-Methoden, um die Seite zu veraendern. Dazu brauchen wir ein bisschen

Javascript

  
// in einer globalen Variablen den aktiven Block merken, nicht sehr elegant, aber fuer dieses Beispiel ertraeglich  
var aktiveBlockNummer = 1;  
function wechseln() {  
  
  // erstmal eine Referenz auf den Container erzeugen, hierbei kommt die ID von vorher in's Spiel  
  var topContainer = document.getElementById('top_container');  
  
  // als naechstes wird eine Collection mit allen <div> Elementen innerhalb des Containers erzeugt  
  var blocks = topContainer.getElementsByTagName('div');  
  
  // naechsten aktiven Block herausfinden, entweder der naechste, oder ggf. der erste  
  aktiveBlockNummer += 1;  
  if(aktiveBlockNummer > blocks.length) { aktiveBlockNummer = 1; }  
  
  // Schleife ueber alle Blocks  
  for (var i = 0; i < blocks.length; i++) {  
  
    // wenn der Block der naechste aktive Block sein soll...  
    if(blocks[i].id == 'block' + aktiveBlockNummer.toString()) {  
  
     // Klasse anhaengen,  
     blocks[i].className = 'aktiv';  
     }  
  
     // anderenfalls  
     else {  
       // Klasse entfernen  
       blocks[i].className = '';  
     }  
  }  
}  
// Funktion alle 3000 Millisekunden aufrufen, 10000 ist schon arg lang  
window.onload = function() {  
  window.setInterval("wechseln()", 3000);  
}  

Bitte benutze beim naechsten Mal Gross- und Kleinschreibung, sonst wird das Posting unleserlich.

Gruß,

Dieter