document.getElementById(id) is null
heb een javascript om een countdown timer weer te geven.
nu krijg ik met FF document.getElementById(id) is null.
en bij IE 8
document.getElementById(...) is null or not an object.
de code is als volgt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<script language="JavaScript">
function countdown(tijd,id,url){
if(tijd>0){
if(tijd>86399){
dagen=Math.floor(tijd/3600/24)
uren=Math.floor((tijd-dagen*3600*24)/3600)
minuten=Math.floor((tijd-dagen*3600*24-uren*3600)/60)
seconden=Math.floor(tijd-dagen*3600*24-uren*3600-minuten*60)
var zichttijd=dagen+":"+uren+":"+minuten+":"+seconden
}else{
uren=Math.floor(tijd/3600)
minuten=Math.floor((tijd-uren*3600)/60)
seconden=Math.floor(tijd-uren*3600-minuten*60)
if(minuten<10 && seconden <10){
var zichttijd="0"+uren+":0"+minuten+":0"+seconden
}else if(minuten<10) {
var zichttijd="0"+uren+":0"+minuten+":"+seconden
}else if (seconden <10) {
var zichttijd="0"+uren+":"+minuten+":0"+seconden
}else {
var zichttijd="0"+uren+":"+minuten+":"+seconden
}
}
tijd=tijd-1
document.getElementById(id).innerHTML=zichttijd;
countdownTimer=setTimeout("countdown('"+tijd+"','"+id+"','"+url+"')",1000);
}else{
document.getElementById(id).innerHTML="00:00"
if(url != '') document.location.href = url
}
}
</script>
function countdown(tijd,id,url){
if(tijd>0){
if(tijd>86399){
dagen=Math.floor(tijd/3600/24)
uren=Math.floor((tijd-dagen*3600*24)/3600)
minuten=Math.floor((tijd-dagen*3600*24-uren*3600)/60)
seconden=Math.floor(tijd-dagen*3600*24-uren*3600-minuten*60)
var zichttijd=dagen+":"+uren+":"+minuten+":"+seconden
}else{
uren=Math.floor(tijd/3600)
minuten=Math.floor((tijd-uren*3600)/60)
seconden=Math.floor(tijd-uren*3600-minuten*60)
if(minuten<10 && seconden <10){
var zichttijd="0"+uren+":0"+minuten+":0"+seconden
}else if(minuten<10) {
var zichttijd="0"+uren+":0"+minuten+":"+seconden
}else if (seconden <10) {
var zichttijd="0"+uren+":"+minuten+":0"+seconden
}else {
var zichttijd="0"+uren+":"+minuten+":"+seconden
}
}
tijd=tijd-1
document.getElementById(id).innerHTML=zichttijd;
countdownTimer=setTimeout("countdown('"+tijd+"','"+id+"','"+url+"')",1000);
}else{
document.getElementById(id).innerHTML="00:00"
if(url != '') document.location.href = url
}
}
</script>
De html code is als volgt
Code (php)
waar kan het aanliggen?
Alvast bedankt.
Die horen alleen voor data zoals adressen e.d.
Voor lay-out gebruik je div.
en kan dat met het probleem te maken hebben?
wat zijn de voordelen van div tegenover tabel.
dacht dat tabellen altijd beter waren.
Tabellen horen echt alleen gebruik te worden voor tabel-data.
Div's zijn er dus speciaal voor de lay-out.
Kan wellicht dat dat het probleem veroorzaakt.
Je HTML klopt niet. Je tabel is niet volledig (je sluit hem niet af met </table>?) en je mist quotes om je id-attribuut. En, waarschijnlijk is dat ook meteen de oorzaak, je mist een > na je id-attribuut (waar dus quotes omheen moeten).
FF blijft het script gewoon uitvoeren dus je ziet ook niet dat er wat mis is.
maar IE doet het dan gewoon weg niet.
Maar zal nog is effe hard zoeken. vooralsnog is IE gewoon bagger.
FF doet het OPERA en CHROME doen het normaal.
Dit is een voorbeeld.
dus tabel wordt idd niet afgesloten.
Maar je hebt het over een > die na id komt welke heb je het over?
en quotes om mijn ID atribuut, dan bedoel je cker van die eerste code
Bij die twee versies hoef je niet per se aanhalingstekens om waardes van id's, classes en andere dingen te doen. Erg handig werkt dat niet.
en met FF is het opgelost. daar heb ik geen melding meer.
Nu alleen IE nog :D We komen er wel
Gewoon een simpel en netjes even
En let wel op dat je voor dagen, uren, minuten en seconden niet 'var' hebt staan, waardoor die naar de global scope doorschieten (dus effectief naar window.dagen, window.uren etc. verwijzen)
Verder kan je setTimeout ook een functie geven, dus zoiets. Dan hoef je niet langer gevaarlijk te doen met strings aan elkaar plakken. Stel dat er een \ of ' (slash of quoteje) in url zit, dan loopt je script in de soep.