Felix Riesterer: Zwei Scripts zu einem?

Beitrag lesen

Lieber kai_world,

was muss ich bei deinen Script verändern, dass nur 2 anstehende Termine angezeigt werden?

Du müsstest lediglich in der Funktion "aktualisieren" am Ende einen Mechanismus hinzufügen, der die bestehenden Termine auf zwei reduziert.

Dazu könntest Du eine zusätzliche Variable am Anfang definieren, die den Wert 2 enthält. Nennen wir sie "nurZwei". Also steht am Anfang der Funktion "aktualisieren":
var nurZwei = 2;

In der Zeile mit dem Code "if (aktuell < heute) {" beginnt eine Verzweigung, die vergangene Termine aussortiert. Im else-Zweig dagegen werden anstehende Termine behandelt. Dort könntest Du den Anweisungsblock erweitern (also das zwischen "else {" und "}"), um nur zwei Termine anzuzeigen.

Momentan steht da:

                        } else {  
                            // Details verstecken  
                            uls = termine[i].getElementsByTagName("ul");  
                            if (uls.length > 0) {  
                                uls[0].style.display = "none";  
                            }  
                        }

Das könnte man jetzt "verfeinern", sprich: erweitern.

                        } else {  
                            if (nurZwei) {  
                                // Details verstecken  
                                uls = termine[i].getElementsByTagName("ul");  
                                if (uls.length > 0) {  
                                    uls[0].style.display = "none";  
                                }  
  
                                nurZwei--; // einen Termin weniger...  
                            } else {  
                                // es wurden zwei Termine angezeigt, alle weiteren jetzt verbergen:  
                                termine[i].style.display = "none";  
                                /* Man hätte hier jetzt auch die Klasse  
                                   "termin-vorbei" benutzen können, aber das  
                                   widerspricht der Bedeutung dieser Klasse... */  
                            }  
                        }

Der Code ist recht simpel. Er unterscheidet nicht, welcher der bestehenden Termine vor welchem anderen Termin stattfinden wird. Es werden einfach die Termine der Reihenfolge nach, in der sie im Dokument stehen, abgehandelt - völlig unabhängig von ihrem Datumswert.

Aber das zu prüfen, also dass wirklich nur die zwei nächstgelegenen unmittelbar anstehenden Termine angezeigt werden - unabhängig von der Reihenfolge, in welcher sie im Dokument stehen - müsstest Du nun selbst umsetzen. Wenn Du meinen Script-Code kapiert hast, dann sollte das für Dich kein Problem mehr sein.

Liebe Grüße aus Ellwangen,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)