Javascript count down timer in minutes and seconds

Thomas_Jung

Erfahrenes Mitglied
Hallo

Habe das Script im Netz gefunden.
Leider funktioniert es wie immer nur im Firefox:) und nicht in IE:(

Habe es auch mit der getElementsByName()-Methode ausprobiert.

Details zum Fehler auf der Webseite IE

Meldung: Das Objekt unterstützt diese Eigenschaft oder Methode nicht.
Zeile: 15
Zeichen: 5
Code: 0
URI: file:///C:/Dokumente%20und%20Einstellungen/Thomas/Desktop/index.html



Kann mir jemand helfen das es auch im IE funktioniert.

Danke ;)

Gruß Thomas

HTML:
    <html>
    <head>
    <title>Countdown</title>
    <script type="text/javascript">
    // set minutes
    var mins = 5;
     
    // calculate the seconds (don't change this! unless time progresses at a different speed for you...)
    var secs = mins * 60;
    function countdown() {
    setTimeout('Decrement()',1000);
    }
    function Decrement() {
    if (document.getElementById) {
    minutes = document.getElementById("minutes");
    seconds = document.getElementById("seconds");
    // if less than a minute remaining
    if (seconds < 59) {
    seconds.value = secs;
    } else {
    minutes.value = getminutes();
    seconds.value = getseconds();
    }
    secs--;
    setTimeout('Decrement()',1000);
    }
    }
    function getminutes() {
    // minutes is seconds divided by 60, rounded down
    mins = Math.floor(secs / 60);
    return mins;
    }
    function getseconds() {
    // take mins remaining (as seconds) away from total seconds remaining
    return secs-Math.round(mins *60);
    }
    </script>
    </head>
    <body>
     
    <div id="timer">
    This is only valid for the next <input id="minutes" name="minutes" type="text" style="width: 14px; border: none; background-color:none; font-size: 16px; font-weight: bold;"> minutes and <input id="seconds"  name="seconds" type="text" style="width: 26px; border: none; background-color:none; font-size: 16px; font-weight: bold;"> seconds.
    </div>
    <script>
    countdown();
    </script>
    </body>
    </html>

Gruß Thomas
 
Hallo,

das Problem ist, dass der IE es ermöglicht, auf Elemente einfach über die ID zuzugreifen, also statt
Code:
document.getElementById("minutes");
kannst du im IE auch einfach
Code:
minutes
schreiben.
Das forciert einen Konflikt, denn ein DOMElement kann nicht durch etwas überschrieben werden.

Die Anweisung dort ist für IE identisch mit
Code:
document.getElementById("minutes")=document.getElementById("minutes")

Lösung: verwende nicht variablennamen, wenn es auch Elemente gibt, die den Variablennamen als ID besitzen.
 

Neue Beiträge

Zurück