Matti Mäkitalo: While-Schleife bricht nach erstem durchlauf ab

Beitrag lesen

Hi,

<html>

Ergänze hier bitte noch einen Dokument-Typ (DOCTYPE).

<br />

Dieses br-Element scheint mir sinnlos. Um einen Abstand vom oberen Rand zu bekommen, weise per CSS dem body-Element einen Innenabstand (oben) zu.

<div align="center" text-align="center">

Dieses div scheint eine Liste zu beinhalten. Lass es doch eine Liste (ul oder ol) sein.

<a href="Link1" target="_blank" date="27.01.2012">Link1</a><hr />
      <a href="Link2" target="_blank">Link2</a><hr />
      <a href="Link3" target="_blank" date="26.01.2012">Link3</a><hr />
      <a href="Link4" target="_blank">Link4</a><hr />
      <a href="Link5" target="_blank" date="01.01.2012">Link5</a><hr />

Die hr-Elemente kannst du entsorgen, und dem a-Elementen (oder den Listen-Elementen, s.o.) einen unteren Rahmen zuweisen. Außerdem gibt es IMHO kein @date-Attribut bei a-Elementen. HTML5-Konform schreibt sich das @data-date.

besuch = new Date();
i = 0
datum = ""

Hier fehlen zwei Semikolons. Es gibt irgendwelche Regeln, nach denen man Semikolons weglassen darf, und vielleicht hast du Glück und hast eine erwischt (obwohl Alexanders Beitrag so aussieht, als sei dies nicht der Fall). Aber ich merke mir diese Regeln nicht, sondern schreibe die Semikolons immer. Das würde ich dir auch empfehlen. Auch solltest du dir angewöhnen, deine Variablen "privat" zu machen, d.h. ein "var" davorschreiben. Die Variable datum benötigst du nur innerhalb der Schleife, die kannst du hier also weglassen.

while (i <= document.links.length) {
   datum = document.links[i].date;

Falls du meinen Ratschlag bzgl. "data-date" beherzigt, heißt dies hier dann document.links[i].getAttribute('data-date'), auch hier ein var vor die Variable.

Deine Logik habe ich nicht auf Korrektheit geprüft.

if(restzeit >0) {
      document.links[i].style.fontWeight = "bold";
   }

Hier empfehle ich dir, dem Element document.links[i] eine Klasse zuzuweisen, welche die gewünschte Formatierung trägt.

Ich teste gerade selbst ein wenig herum. Mein Favorit ist es, eine CSS-Regel dynamisch einzuführen, welche das Attribut data-date mit dem entsprechenden Wert (dem heutigen Datum) tragen. Alternativ einfach allen Elementen mit dem passenden Attribut-Wert die entsprechende Klasse zuzuweisen. Das ist mit jQuery ein Einzeiler.
Bis die Tage,
Matti