Azami: 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

Danke für deine ausführlichen Ratschläge.

Die Formatierungen etc. mit HR, dem BR und den A als Liste habe ich nur gemacht, da ich erstmal nur in einer reinen "Testumgebung" bastel, also komplett ohne CSS etc. In der richtigen Page hab ich das natürlich vernünftiger gemacht ;)

Ich habe mal die date durch deine @data-date ersetzt und auch die abfrage soweit geändert und natürlich auch die Semikolon hinzugefügt *facepalm*

Leider läuft die schleife jetzt erst garnicht mehr an und IE spuckt mir wie immer diesen Fehler aus:
[code language=html]
Details zum Fehler auf der Webseite

Benutzer-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)
Zeitstempel: Mon, 30 Jan 2012 12:20:05 UTC

Meldung: 'datum' ist Null oder kein Objekt
Zeile: 18
Zeichen: 2
Code: 0
URI: file:///C:/***/test.htm
[/code]

jQuery, Mootools etc kommt hier leider nicht in frage...Sicherheitsbestimmungen -.-

Grüße
Merlin