Erbitte Hilfe bei JS-Script

Dieses Thema im Forum "Tech & FAQ Forum" wurde erstellt von gogekko, 21 Mai 2018.

  1. gogekko

    gogekko Mitglied

    Registriert seit:
    25 April 2001
    Beiträge:
    341
    Hallo,

    ich benötige Hilfe - wer ist so freundlich und zeigt mir, was zu tun ist. Sehr gerne mit Erklärung, damit ich etwas lernen kann.

    wenn amount < 0 bis -5 dann "Now"
    wenn amount < -6 dann nix
    ansonsten Tage

    Vielen Dank!

    Code:
    <html>
    <head>
    <title>Your Page Name</title>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    
    <!-- Multi countdown - the month entered must be one less than current month. ie; 0=January, 11=December
    
    dateFuture1 = new Date(2018,4,23,00,00,00); // Test 1
    dateFuture2 = new Date(2018,5,20,00,00,00); // Test 2
    
    function GetCount(ddate,iid){
    
    dateNow = new Date();
    amount = ddate.getTime() - dateNow.getTime();
    delete dateNow;
    
    if(amount < 0){
      document.getElementById(iid).innerHTML="Now";
    }
    
    else if(amount < -6){
      document.getElementById(iid).innerHTML="A";
    }
    
    else{
    months=0;days=0;out="";
    
    amount = Math.floor(amount/1000);
    
    days=Math.floor(amount/86400);
    amount=amount%86400;
    
      out += days +" "+((days==1)?"day":"")+", ";
      out = out.substr(0,out.length-2);
      document.getElementById(iid).innerHTML=out;
    
    setTimeout(function(){GetCount(ddate,iid)}, 1000);
    }
    }
    
    window.onload=function(){
    GetCount(dateFuture1, 'countbox1');
    GetCount(dateFuture2, 'countbox2');
    };
    
    // -->
    
    </script>
    </head>
    <Body>
    Test 1 <span id="countbox1" style="font:10px Verdana; color:#FF0000;"></span>
    Test 2 <span id="countbox2" style="font:10px Verdana; color:#FF0000;"></span>
    </body>
    </html>
    
    
    Zuletzt bearbeitet: 22 Mai 2018
  2. EchtAtze

    EchtAtze Bekannter Mitglied

    Registriert seit:
    9 Juni 2001
    Beiträge:
    4.963
    Anstatt
    Code:
    if(amount < 0){
    einfach
    Code:
    if(amount < 0 && amount > -6){
    verwenden, denke ich.

    Edit:
    Musste kurz editieren um es etwas klarer zu machen.
    Zuletzt bearbeitet: 21 Mai 2018
  3. dr_tommi

    dr_tommi alter Oldie

    Registriert seit:
    26 April 2001
    Beiträge:
    11.973
    Vielleicht ist es hilfreich wenn du uns zuerst mal etwas ausführlicher erklärst was du machen willst und was wann und wie angezeigt werden soll.
    Oder sollen wir selbst aus deinem Codefragment herausfinden was eigentlich passieren soll?
    Datefuture aber negativer Countdown?
  4. gogekko

    gogekko Mitglied

    Registriert seit:
    25 April 2001
    Beiträge:
    341
    @Echt Atze - leider funktioniert das nicht

    Das Script liefert die Tage bis zu einem Ereignis. Test 2 findet am 20.6.2018 statt also wird 28 ausgegeben.

    Wenn es nur noch 1 Tag ist dann steht dort 1dy.

    Wenn es 2-5 Tage über dem Datum ist, dann soll dort "Now" stehen
    Wenn es >5 Tage über dem Datum ist, dann soll dort "A" stehen
  5. dr_tommi

    dr_tommi alter Oldie

    Registriert seit:
    26 April 2001
    Beiträge:
    11.973
    @gogekko
    Ich hab da mal was kopiert zum testen:

    HTML:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
    p {
      text-align: center;
      font-size: 60px;
      margin-top:0px;
    }
    </style>
    </head>
    <body>
    
    <p id="demo"></p>
    <p id="demo1"></p>
    
    
    <script>
    // Set the date we're counting down to
    var countDownDate = new Date("May 18, 2018 15:37:25").getTime();
    
    //Date(2018,5,18,00,00,00)
    
    // Update the count down every 1 second
    var x = setInterval(function() {
    
        // Get todays date and time
        var now = new Date().getTime();
       
        // Find the distance between now an the count down date
        var distance = countDownDate - now;
       
        // Time calculations for days, hours, minutes and seconds
        var days = Math.floor(distance / (1000 * 60 * 60 * 24));
        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
        var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
        var seconds = Math.floor((distance % (1000 * 60)) / 1000);
       
        // Output the result in an element with id="demo"
        document.getElementById("demo").innerHTML = days + " d ";// + hours + "h " + minutes + "m " + seconds + "s ";
       
        // If the count down is over, write some text
        if (days < 0 && days > -6 ) {
            clearInterval(x);
            document.getElementById("demo1").innerHTML = "Now";
        } else if (days < -6 ) {
        clearInterval(x);
            document.getElementById("demo1").innerHTML = " A";
    
       
        }
    
    
    }, 1000);
    </script>
    
    </body>
    </html>
    
    
    
  6. EchtAtze

    EchtAtze Bekannter Mitglied

    Registriert seit:
    9 Juni 2001
    Beiträge:
    4.963
    Ich habe nur deine Logik entsprechend deiner Beschreibung erweitert.
    Ob der Rest überhaupt funktioniert habe ich nicht getestet. ;)
  7. spamwerbung

    spamwerbung Bekanntes Mitglied

    Registriert seit:
    30 Dezember 2001
    Beiträge:
    1.210
    Wenn ich das richtig verstanden habe, vergleichst du Äpfel mit Birnen. Was du willst ist die Differenz in Tagen, du vergleichst aber die Differenz in Millisekunden seit dem 1. Jan 1970, also statt "2018,4,23,00,00,00" <> "2018,5,20,00,00,00" eben den von JS intern genutzten 'TimeStamp' "1524441600000" <> "1526774400000" und das klappt natürlich so überhaupt nicht, da -6 als Wert sehr sehr weit vom Gesuchten weg ist. Also zumindest nicht wenn du die Differenz in Tagen statt "Millisekunden seit dem 1. Jan 1970" benötigst. Du musst so wie tommi die Tage ausrechnen und die dann vergleichen. Oder die Tage in Millisekunden umrechnen also statt -6 eben -6 Tage * 24 Stunden * 60 Minuten * 60 Sekunden * 1000 Millisekunden.

    Hab das auf die Schnelle gefunden, wie man mit JS Werte aus einem Datum bzw. einem 'TimeStamp' bekommt:
    https://www.w3schools.com/js/js_date_methods.asp

    Hier hier mal Bespiele für die Berechnung der Tagesdifferenz zweiter Datum:
    https://stackoverflow.com/questions/2627473/how-to-calculate-the-number-of-days-between-two-dates
  8. dr_tommi

    dr_tommi alter Oldie

    Registriert seit:
    26 April 2001
    Beiträge:
    11.973
    Da kommt ein Hilferuf als ob man ohne Hilfe nicht mehr leben kann und dann passiert keine Reaktion mehr.
    Sollte uns das zu denken geben?
    Oder vielleicht in Zukunft davon abhalten bereits in der ersten Woche zu helfen?
    Wenn es dringend ist dann verstärkt sich die Dringlichkeit in Laufe der Zeit. ;)
    Wenn nicht kann es auch ein paar Wochen warten. ;)
    Und Rückmeldungen sind ja sowieso überbewertet.
    Nicht meckern scheint schon genug Rückmeldung zu sein.
  9. RichyZuHause

    RichyZuHause Alter mit Ego

    Registriert seit:
    2 Juni 2001
    Beiträge:
    1.855
    Die Dringlichkeit der Lebenserhaltung lässt nach der Rettung stark nach. :icon_tsts:
    Nur in Baywatch (t) verliebt man sich aus Dankbarkeit danach in den Helden. :icon_smlove:
    Und beim nächsten Mal rennt er wieder, wenn's schallt.

    Wir empfinden das als ungerecht.
    Und helfen milde lächelnd weiter.
    Das ist cool. :yo
    SpRuZ sagt Danke.