2017-07-28 2 views
0

Ich versuche die innereHTML eines Div zu ändern, basierend auf der Zahl, die von einer JavaScript-Funktion aufgefüllt wird. Leider bekomme ich einen Fehler und ich bin mir nicht sicher warum.Fehler beim Versuch, innerHTML zu ändern - Eigenschaft 'innerHTML' von null kann nicht gesetzt werden

Pseudocode

Wenn number > 2 Änderung innerHTML- zu seconds sonst zu second ändern.

Ich schaute mich um und ich fand etwas im Zusammenhang mit der Funktion ausgelöst vor dem DOM. Ich habe einige Änderungen vorgenommen, aber immer noch keinen Erfolg. Was mache ich falsch? Wie kann ich die Funktion auslösen, nachdem das DOM gerendert wurde? Arbeitet die window.onload nicht schon?

Vielen Dank im Voraus

JS

$(document).ready(function() { 
    window.onload = function() { 
    // Month,Day,Year,Hour,Minute,Second 
    upTime('may,05,2006,00:00:00'); 
    }; 

    function upTime(countTo) { 
     var now = new Date(); 
     countTo = new Date(countTo); 
     var difference = (now - countTo); 

     var years = Math.floor(difference/(60 * 60 * 1000 * 24)/365); 
     var days = Math.floor(difference/(60 * 60 * 1000 * 24) * 1); 
     var hours = Math.floor((difference % (60 * 60 * 1000 * 24))/(60 * 60 * 1000) * 1); 
     var mins = Math.floor(((difference % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000))/(60 * 1000) * 1); 
     var secs = Math.floor((((difference % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000))/1000 * 1); 

     document.getElementById('years').firstChild.nodeValue = years; 
     document.getElementById('days').firstChild.nodeValue = days; 
     document.getElementById('hours').firstChild.nodeValue = hours; 
     document.getElementById('minutes').firstChild.nodeValue = mins; 
     document.getElementById('seconds').firstChild.nodeValue = secs; 

     if (secs > 2) { 
     console.log('over'); 
     document.getElementById('.seconds').innerHTML = "seconds"; 
     } else { 
     console.log('lower'); 
     document.getElementById('.seconds').innerHTML = "second"; 
     } 

     clearTimeout(upTime.to); 
     upTime.to = setTimeout(function() { 
      upTime(countTo); 
     }, 1000); 
    } 
}); 
+0

Die Fehlermeldung weist Sie darauf hin, dass das Objekt, das Sie versuchen, .innerHTML on zu definieren, nicht vorhanden ist. Es ist kein Problem mit '.innerHTML', sondern ein Problem mit dem direkt davor liegenden Code, zB' document.getElementById (". Seconds") 'Probieren Sie das' .': 'document.getElementById (" seconds ") aus. InnerHTML = "seconds" ' –

+0

Off topic: es ist nett, dass du das in deinen Code legst, einer meiner Pet Peevs sieht Code wie:" verbleibende Zeit: 1 Sekunden "- ugh. Verwenden Sie '?:' Für etwas prägnanteren Code: 'document.getElementById ('seconds'). InnerHTML =" second "+ (secs == 1?" ":" S ");' (nicht sicher, warum Sie es sind mit '> 2' sollte'! = 1' oder '> = 2' sein. –

+0

Danke freedomn. Der Grund ist, dass ich viele Dinge versuchte, einschließlich dieser Werte zu ändern. Ich werde auch den Code mit Ihrem Vorschlag aktualisieren ... Ternär Operator Recht? Ich muss mich an diese Dinge beim Programmieren erinnern. –

Antwort

3

Get Element von Klasse: document.getElementsByClassName('seconds') und von Iddocument.getElementById('seconds')

Aber mit jQuery, id$('#seconds') und Klasse$('.seconds')

+0

Danke Andrew. –

Verwandte Themen