Bensberg: Spendenbarometer

Hallo zusammen,

ich möchte für einen gemeinnützigne Verein eine Spendenuhr (Spendenbarometer) einrichten, bei der sich die Gesamtspendensumme jede Sekunde um einen festen Faktor (Erfahrungswert) erhöht. Um den Spendenstand hin und wieder dem tatsächlichen Spendeneingang anzupassen, sollte zudem eine Eingabemöglichkeit für einen Korrekturbetrag (+/-) bestehen.

Ich habe etwas ähnliches im Web gefunden ("Schuldenuhr"), verstehe aber nicht ganz, wie es funktioniert.

Kann mir jemand helfen?

<body>
<script language="JavaScript">
function schulden() {
var faktor = 1335;
var schulden = 2037182130000;
var startzeitpunkt = 1337439838030;
var heute = new Date ();
var plus = (heute.getTime() - startzeitpunkt)*faktor
var gesamt = Math.round(schulden + plus / 1000)
var kohle= gesamt+" Eur";
// alert(heute.getTime());
document.getElementById("kohle").innerHTML = kohle.substring(0,1)+'.'+ kohle.substring(1,4)+'.'+ kohle.substring(4,7)+'.'+kohle.substring(7,10)+'.'+kohle.substring(10,17)
timerID = setTimeout("schulden()",1000)
}
</script>
<div id="kohle" style="color: #aaaaaa; font-size:305%; font-weight: bolder;"><a href="http://www.webtodateforum.de">Schulden Uhr - Web to Date Forum</a></div>
<script language="JavaScript">schulden();</script> 
  1. Hallo Bensberg

    Nur nebenbei bemerkt:

    Das language-Attribut im script-Element gilt als deprecated und soll nicht mehr verwendet werden.

    Auch eine Angabe des type-Attributes à la <script type="text/javascript"> ist unnötig, da dies der Standardwert für dieses Element ist.

    Einfach <script> für JavaScript-Content genügt.

    Gruß,

    HAL

    1. wie geschrieben, habe ich das an anderer Stelle so übernommen. Ich habe so gut wie keine Ahnung von der Sache. Darum habe ich ins Forum geschrieben und hoffe darauf, dass mir ein netter Mensch eine Lösung aufzeigt. Beste Grüße

      1. Hallo Bensberg,

        Ich habe so gut wie keine Ahnung von der Sache […] und hoffe darauf, dass mir ein netter Mensch eine Lösung aufzeigt.

        Betrachte diese Hinweise nicht als Angriff sondern als ersten Baustein deiner Lösung.

        Bis demnächst
        Matthias

        --
        Signaturen sind bloed (Steel) und Markdown ist mächtig.
      2. Hallo

        wie geschrieben, habe ich das an anderer Stelle so übernommen.

        Dann schadet es trotzdem nicht zu wissen, was an daran Murks ist.

        Ich habe so gut wie keine Ahnung von der Sache.

        Wenn dem nicht so wäre, hättest du nicht gefragt. ;-)

        Darum habe ich ins Forum geschrieben und hoffe darauf, dass mir ein netter Mensch eine Lösung aufzeigt.

        Ob ich nett bin, sei mal dahin gestellt, aber ich kann dir zumindest ein paar Takte dazu sagen, was in dem Code passiert, den du gepostet hast.

        Mal ein wenig bereinigt und kommentiert:

        <html>
          <head>
            <meta charset="utf-8">
            <title>Schuldenuhr</title>
            <style>
        
              div {
                color: aaaaaa;
                font-size: 3em;
                font-weight: bolder;
              }
        
            </style>
          </head>
          <body>
            <div id="kohle">
              <a href="http://www.webtodateforum.de">Schulden Uhr - Web to Date Forum</a>
            </div>
            <script>
        
              function schulden ( ) {
                // Deklaration von Variablen mit vorgegebenen Werten
                var faktor = 1335;
                var schulden = 2037182130000;
                var startzeitpunkt = 1337439838030;
        
                // speichern einer aktuellen Datums-/Zeitangabe
                var heute = new Date( );
        
                // Verwendung der Methode getTime: gibt die seit dem 1.1.1970 0:00:00 Uhr UTC
                // vergangene Zeit in Millisekunden heraus, quasi als Referenz
        
                // Errechnung der Differenz dieses Wertes mit dem angegebenen Startzeitpunkt
                // und Multiplikation mit dem zuvor definierten Wert der Variable faktor
                var plus = (heute.getTime( ) - startzeitpunkt) * faktor;
        
                // kaufmännische Rundung der Summe des Wertes für schulden und des Wertes von plus
                // geteilt durch 1000 [wegen setTimeout: siehe weiter unten]
                var gesamt = Math.round(schulden + plus / 1000);
        
                // Umwandlung des Ergebnisses in einen String und Konkatenation mit dem Textkürzel " Eur"
                var kohle = gesamt + " Eur";
        
                // speichern des div-Elementes in einer Variable über die zugewiesene ID
                var div = document.getElementById('kohle');
        
                // die String-Methode substring extrahiert Zeichen nach Indexwerten
                // hier wird der String aus der Variablen kohle zerlegt und in gewissen Abständen
                // Punkte eingefügt, also wieder Stringkonkatenation
        
                // der String, der sich daraus ergibt wird dann über die Methode .innerHTML als
                // Inhalt des div-Elementes ausgegeben
                div.innerHTML = kohle.substring(0,1) + '.' +
                                kohle.substring(1,4) + '.' +
                                kohle.substring(4,7) + '.' +
                                kohle.substring(7,10) + '.'+ 
                                kohle.substring(10,17);
        
                // schließlich wird durch setTimeout bewirkt, dass die Funktion sich selbst nach
                // 1000 Millisekunden erneut aufruft
                var timerID = setTimeout("schulden()", 1000);
              }
        
        
              // erstmaliger Aufruf der zuvor notierten Funktion
              schulden( );
        
            </script>
          </body>
        </html>
        

        Hier im selfHTML-Wiki kannst du zu den Stichworten aus meiner Kommentierung detailiertere Informationen bekommen, und wenn nach der Lektüre immernoch etwas unklar ist, einfach nachfragen.

        Vielleicht hilft dir ja ein netter Mensch. ;-)

        Gruß,

        HAL

  2. Hallo Bensberg,

    Um den Spendenstand hin und wieder dem tatsächlichen Spendeneingang anzupassen, sollte zudem eine Eingabemöglichkeit für einen Korrekturbetrag (+/-) bestehen.

    Da kommst du allein mit JavaScript nicht klar, denn der Korrekturbeitrag soll ja
    a) nicht von jedermann eingegeben werden dürfen und
    b) mit der Eingabe für alle folgenden Seitenaufrufe gelten

    JavaScript ist meiner Meinung auch die falsche Wahl, interessant nur für den Fall, dass jemand dem Wachsen des Spendenberges zuschauen möchte. Du brauchst eine serverseitige Lösung, z.B. PHP.

    Bis demnächst
    Matthias

    --
    Signaturen sind bloed (Steel) und Markdown ist mächtig.