Toon posts:

[javascript] <span id=?>

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben vandaag eens begonnen wat Javascript te 'oefenen'. Ik zocht een timer-script. Ik kon geen goede vinden, dus ben ik er eentje gaan bewerken. Ik heb geen idee of ik het omslachtig doe (buiten de berekeningen om), maar het werkt :). Dacht ik :P, totdat ik met Internet Explorer ging kijken, Deze geeft als error:

Regel: 9
Teken: 2
Fout: Deze eigenschap of methode wordt niet ondersteund door dit object
Code: 0
URL: http://www.theschoolcriminals.com/test.html

Mijn script is als volgt:
code:
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
<span id=sec>3400000</span>
<span id=uur></span> uur, <span id=minuten></span> minuten en <span id=seconden></span> seconden!
<script type="text/javascript">
function aftellen(){
    //var inter = 3400000;
    var inter = parseInt(document.getElementById('sec').innerHTML);
    
    uren = inter / 3600;
    uur = Math.floor(uren)
    
    gehad = uur * 3600;
    moetnog = inter - gehad;
    
    minuten = moetnog / 60;
    mins = Math.floor(minuten)
    
    gehadmin = mins * 60;
    moetnog2 = moetnog - gehadmin;
    secs = moetnog2;
    
    if(inter <= 0){
        clearInterval(interval);
        document.location.reload();
    } else {
        document.getElementById('sec').innerHTML=inter-1;
        //var inter-1;
        document.getElementById('uur').innerHTML=uur;
        document.getElementById('minuten').innerHTML=mins;
        document.getElementById('seconden').innerHTML=secs;
    }
} 
    interval = setInterval('aftellen();', 1000);
    </script>


Is het zo dat Internet Explorer anders omgaat met de <span id=?>-dingen? Want in Firefox werkt het script gewoon. Het is trouwens niet erg als de <span id=sec>3400000</span> wegmoet, want deze wil ik toch al in de functie bouwen, ik weet alleen niet hoe dat moet. Maar daar gaat het mij (nog) niet om. Ik vraag me dus af wat er fout is volgens Internet Explorer, en waarom dat in Firefox wel werkt...

SAplayer

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Plaats eens mooi overal var voor ;)

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
    var uren = inter / 3600;
    var uur = Math.floor(uren);
    
    var gehad = uur * 3600;
    var moetnog = inter - gehad;
    
    var minuten = moetnog / 60;
    var mins = Math.floor(minuten);
    
    var gehadmin = mins * 60;
    var moetnog2 = moetnog - gehadmin;
    var secs = moetnog2;

March of the Eagles


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Probeer het eens met een normaal HTML document... Dus voeg eens minimaal de volgende tags toe: html, head, title en body. Het lijkt er namelijk op dat het fout gaat bij de aanroep van Math.floor(uren) en dat wordt gewoon ondersteund in IE, overigens zou ik achter die regel ook een ; achter zetten..

If I can't fix it, it ain't broken.


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Het is volgens mij zo dat je bij internet explorer elementen direct kunt aanspreken met het id (id="uur" > alert(uur.nodeName); zal aangeven dat het een span-element is).

Je gebruikt ook geen var uur; er wordt dus gebruik gemaakt van de globale uur-variabele.

Verwijderd

Topicstarter
Joepie :D Dat var ervoor hielp al :D ik had dit wel geprobeerd bij enkel de Math.floor functies, maar dit hielp niet. Wat is het verschil eigenlijk, van 'var' gebruiken, en gewoon kaal de variable?

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
De scope van de variabele, een "kale" variabele is globaal, kan overal worden gebruikt en de variabele met "var" ervoor bij declaratie kan enkel in de functie waar die is aangemaakt worden gebruikt.

Verwijderd

Topicstarter
Shadowman schreef op dinsdag 17 oktober 2006 @ 20:04:
De scope van de variabele, een "kale" variabele is globaal, kan overal worden gebruikt en de variabele met "var" ervoor bij declaratie kan enkel in de functie waar die is aangemaakt worden gebruikt.
ok, dankje :).

dan heb ik nog een vraagje, wat volgensmij simpele javascript is, maar ik kom er niet uit :s.

Ik gebruik nu de "var inter = parseInt(document.getElementById('sec').innerHTML);" om het totaal aantal seconden uit de "<span id=sec>300</span>". Nu wil ik eigenlijk het totaal aantal seconden direct in de functie zetten, zodat bij de eerste ronde, meteen al de goede waarden worden weergegeven. Ik heb al geprobeerd om "var inter = 300;" in de functie te zetten, maar dit werkt niet, ook al gebruik ik onderaan dan: "var inter-1;"

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
JavaScript:
1
2
var secSpan = document.getElementById('sec').innerHTML;
var inter = (secSpan.innerHTML != '') ? parseInt(secSpan.innerHTML) : 300;

March of the Eagles


Verwijderd

Topicstarter
Hacku schreef op dinsdag 17 oktober 2006 @ 20:26:
JavaScript:
1
2
var secSpan = document.getElementById('sec').innerHTML;
var inter = (secSpan.innerHTML != '') ? parseInt(secSpan.innerHTML) : 300;
Dankje, maar ik kom er nog niet helemaal uit :s

mijn script is nu als volgt:
JavaScript:
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
<span id=sec>300</span>
<span id=uur></span> uur, <span id=minuten></span> minuten en <span id=seconden></span> seconden!
<script type="text/javascript">
function aftellen(){
    var inter = (secSpan.innerHTML != '') ? parseInt(secSpan.innerHTML) : 300;
    
    var uren = inter / 3600;
    var uur = Math.floor(uren);
    
    var gehad = uur * 3600;
    var moetnog = inter - gehad;
    
    var minuten = moetnog / 60;
    var mins = Math.floor(minuten);
    
    var gehadmin = mins * 60;
    var moetnog2 = moetnog - gehadmin;
    var secs = moetnog2;
    
    if(inter <= 0){
        clearInterval(interval);
        document.location.reload();
    } else {
        var secSpan = document.getElementById('sec').innerHTML;
        
        document.getElementById('uur').innerHTML=uur;
        document.getElementById('minuten').innerHTML=mins;
        document.getElementById('seconden').innerHTML=secs;
    }
} 
    interval = setInterval('aftellen();', 1000);
    </script>


Ik heb de twee zinnen in deze volgorde gezet, omdat ik dit het logischte (is dat Nederlands?) vond. Maar ik krijg als error dat "innerHTML" leeg of geen object is. Hiermee wordt de innerHTML op regel 5 bedoeld (teken 2) :s

Kun je me uitleggen waar ik de regels moet plaatsen?

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 07:38

DizzyWeb

Ondertiteld

Kan je die var secSpan = document.getElementById('sec').innerHTML; niet beter neerzetten VOOR je de variabele gebruikt? Dus op regel 5?

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Inderdaad, zet die eens voor de variabele inter. Overigens had ik in mijn voorbeeld een foutje gemaakt, probeer dit eens:

JavaScript:
1
2
var secSpan = document.getElementById('sec').innerHTML;
var inter = (secSpan != '') ? parseInt(secSpan) : 300;

March of the Eagles


Verwijderd

Topicstarter
Ik heb het script nu zo:

JavaScript:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<html>
<head>

<script type="text/javascript">

function aftellen()
{
    var int = 300;
    var inter = int;
    
    var uren = inter / 3600;
    var uur = Math.floor(uren);
    
    var gehad = uur * 3600;
    var moetnog = inter - gehad;
    
    var minuten = moetnog / 60;
    var mins = Math.floor(minuten);
    
    var gehadmin = mins * 60;
    var moetnog2 = moetnog - gehadmin;
    var secs = moetnog2;
    
    if(inter <= 0) {
        clearInterval(interval);
        document.location.reload();
    } else {
        //document.getElementById('sec').innerHTML = inter - 1;
        var int = inter - 1;
        
        //var sec = document.getElementById('sec').innerHTML;       
        document.getElementById('uur').innerHTML = uur;
        document.getElementById('minuten').innerHTML = mins;
        document.getElementById('seconden').innerHTML = secs;
    }
} 

</script>
    
</head>
<body>

<script type="text/javascript">

interval = setInterval('aftellen();', 1000);

</script>

<span id=uur></span> uur, <span id=minuten></span> minuten en <span id=seconden></span> seconden!

</body>
</html>


nu blijft de output: 0uur, 5minuten en 0seconden! , en er veranderd niets aan. Ook Internet Explorer geeft geen error... iemand een idee hoe ik hem weer lopend kan krijgen, op deze manier?

[ Voor 78% gewijzigd door Verwijderd op 18-10-2006 01:26 ]


  • user109731
  • Registratie: Maart 2004
  • Niet online
var int = 300 buiten je functie zetten. Nu is het zo dat elke keer wanneer aftellen() gestart word (elke seconde dus) inter opnieuw op 300 word ingesteld.

Het eerste stuk van je script word dus zo:
JavaScript:
1
2
3
4
5
6
7
8
var int = 300;

function aftellen()
{
    var inter = int;
    
    var uren = inter / 3600;
    var uur = Math.floor(uren);

En dit:
JavaScript:
1
var int = inter - 1;

veranderen in dit (int heb je bovenaan al gedeclareerd):
JavaScript:
1
int = inter - 1; // of: int = inter--;

Verwijderd

Topicstarter
Dankjewel :D:D het werkt eindelijk. Alleen bij de eerste 'ronde' is er nog niets ingeuld bij de <span id= tags, dus laat hij nog niets zien. Ik heb het al met document.write() geprobeerd, maar dit is ook niet echt de goede methode omdat hij dan de pagina steeds gaat refreshen. Zijn er nog meer manieren naast <span id=sec></span> en document.write() om variabelen naar het scherm te printen?? Ik heb heel Google al afgezocht, maar ze komen allemaal met document.write()... :?

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

document.createElement
document.createTextNode

:)

Verwijderd

Topicstarter
Is er misschien een site, net zoiets als php.net, maar dan voor javascript funcites? Waar ze gewoon duidelijk uit leggen wat welke functie doet, en hoe je ze moet gebruiken? want bij document.createElement en document.createTextNode kom ik er echt niet uit hoor :s. Er zijn zo veel sites, die scripts aanbieden waar de functies ingebakken zijn, maar daar heb ik niets aan :(

  • user109731
  • Registratie: Maart 2004
  • Niet online
Mozilla heeft een handige reference, lijkt me wel aardig met php.net vergelijkbaar? Als ik jou was zou ik me dan wel eerst goed inlezen over het DOM, zodat je weet wat bijvoorbeeld textnodes en elements zijn.

Wat André bedoeld is zoiets:
JavaScript:
1
2
3
4
var span = document.createElement('span');
var textnode = document.createTextNode(seconden);
span.appendChild(textnode); 
document.body.appendChild(span);
Pagina: 1