document.getElementById(id) is null

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas de vries

thomas de vries

01/07/2010 19:26:18
Quote Anchor link
Goedenavond heb een klein vraagje
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)
PHP script in nieuw venster Selecteer het PHP script
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
<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>


De html code is als volgt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<table width="100%">
<tr>
    <td id=id_<?php echo $blaat['id'];?></td>
</tr>
<script language="JavaScript">
        countdown(<?php echo $countdown; ?>,'id_<?php echo $blaat['id']; ?>','/p=blaat');
</script>


waar kan het aanliggen?
Alvast bedankt.
 
PHP hulp

PHP hulp

19/04/2024 14:57:51
 

01/07/2010 20:24:17
Quote Anchor link
Geen tabellen gebruiken.
Die horen alleen voor data zoals adressen e.d.
Voor lay-out gebruik je div.
 
Thomas de vries

thomas de vries

01/07/2010 20:33:22
Quote Anchor link
@karl waarom eigenlijks geen tabellen gebruiken?
en kan dat met het probleem te maken hebben?
wat zijn de voordelen van div tegenover tabel.
dacht dat tabellen altijd beter waren.
 

01/07/2010 20:35:22
Quote Anchor link
Nee, tabellen zijn moeilijk in onderhoud en je hebt verschillen tussen de browsers.
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.
 
Jelmer -

Jelmer -

01/07/2010 20:46:15
Quote Anchor link
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).
 
Thomas de vries

thomas de vries

01/07/2010 20:47:10
Quote Anchor link
in feite niet als ik in google zoek dan lijkt het erop dat er geen id wordt meegegeven.
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.
 
Thomas de vries

thomas de vries

01/07/2010 20:49:33
Quote Anchor link
@jelmer
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
 

01/07/2010 21:05:52
Quote Anchor link
Gebruik je nog html4.01? Of gebruik je alweer html5?
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.
 
Thomas de vries

thomas de vries

01/07/2010 21:08:36
Quote Anchor link
Gebruik html4.01
en met FF is het opgelost. daar heb ik geen melding meer.
Nu alleen IE nog :D We komen er wel
 
Jelmer -

Jelmer -

01/07/2010 21:11:56
Quote Anchor link
Maak van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<table width="100%">
<tr>
    <td id=id_<?php echo $blaat['id'];?></td>
</tr>

Gewoon een simpel en netjes even
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<span id="id_<?php echo $blaat['id']?>">taart</span>


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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
setTimeout(function() {
        countdown(tijd, id, url);
    }, 1000);
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.