7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    wout3r

    [Javascript] Na een interval globale var optellen (SPOED)

    Hi guys,

    Ik heb al lang zitten klooien maar ik kom er nog niet helemaal uit.. Nu zit ik er met enige druk en spoed mee te stressen.
    Ik hoop dat iemand mij kan helpen.

    Ik heb verschillende divs onder elkaar staan in 1 container div. Dit is de constructie ongeveer:
    [code:1:81d978a661]
    <div id="container" style="height: 150px; overflow: hidden">
    <div id="set_1">
    test 1
    </div>

    <div id="set_2">
    test 2
    </div>

    <div id="set_3">
    test 3
    </div>
    </div>
    [/code:1:81d978a661]

    Nu moet hij om de 5 seconde een nieuwe set laten zien. Dit doe ik met een interval op de volgende manier (ik gebruik het Mootools framework):

    [code:1:81d978a661]
    var currentSet = 1;

    function refreshSets( maxSets ) {
    if( window.currentSet >= maxSets ) {
    window.currentSet = 1;
    }

    $( ‘bannerset_’ + currentSet ).setStyle( ‘display’, ‘none’ );
    $( ‘bannerset_’ + ( currentSet+1 ) ).setStyle( ‘display’, ‘block’ );
    window.currentSet = ( window.currentSet + 1 );
    }

    setInterval( "refreshSet( 4 )", 5000 );
    [/code:1:81d978a661]

    Nu is het enige probleem dat hij na de interval zijn currentSet variable niet update naar een nummertje omhoog.. Dus hij blijft hangen op de set 2, maar gaat niet naar 3.

    Ik hoop dat iemand mij kan helpen hiermee.
    Alvast bedankt,

    Wouter

    Bijdrager
    Jakko Westerbeke

    Ik zie nergens iets staan dat de waarde van de variabele currentSet verandert … window.currentSet is volgens mij niet hetzelfde als currentSet, dus zou het zo niet werken?
    [code:1:85ab2fd518]var currentSet = 1;

    function refreshSets( maxSets ) {
    if( window.currentSet >= maxSets ) {
    window.currentSet = 1;
    }

    $( ‘bannerset_’ + window.currentSet ).setStyle( ‘display’, ‘none’ );
    $( ‘bannerset_’ + ( window.currentSet+1 ) ).setStyle( ‘display’, ‘block’ );
    window.currentSet = ( window.currentSet + 1 );
    }

    setInterval( "refreshSet( 4 )", 5000 );[/code:1:85ab2fd518]

    O ja, en ook kun je
    [code:1:85ab2fd518] window.currentSet = ( window.currentSet + 1 ); [/code:1:85ab2fd518]
    als het goed is vervangen door
    [code:1:85ab2fd518] window.currentSet++[/code:1:85ab2fd518]

    Bijdrager
    iJoost

    Client side is er een window object waarin alle globale variabelen te vinden zijn (maar wat je niet telkens hoeft te noemen als je een globale variable wilt aanspreken). Server side is dat window object er nog niet. Ik denk dat je eens even moet nadenken over wanneer welke code (server side, client side) nu precies uitgevoerd wordt.;-)

    Wat verder opvalt is dat de functie die je meegeeft aan setInterval helemaal niet bestaat. Er is wel een refreshSets functie maar geen refreshSet gedeclareerd.

    Bijdrager
    wout3r

    Hi all,

    Bedankt alweer voor jullie reactie tot zo ver.

    Ik ben er nog steeds niet helemaal uit gekomen, de reactie van iJoost begrijp ik het clientside/serverside verhaal nog niet helemaal. Is er ergens documentatie te vinden over dit verhaal m.b.t. Javascript?

    Wat betreft die regreshSet dat was eigenlijk een tikfoutje maar dat is inmiddels verholpen :wink:

    Bijdrager
    iJoost

    Toch is het wel van belang dat je begrijpt wat er server side en wat er client side gebeurt. En in welke volgorde.

    Gebruik maar eens een View source vanuit het menu van je browser. Dan zie je de server side code al niet meer. En wat je dan ziet is dus wat er client side wordt uitgevoerd. Je kunt je misschien voorstellen dat een variabele die aan de ene kant gedeclareerd en gevuld wordt er aan de andere kant niet meer of nog niet is.;-)

    Er moet wel ergens een “PHP voor beginners” handleiding op het web te vinden zijn, toch?

    Bijdrager
    wout3r

    Ooh nee oké, dat is wat je bedoelt. Ik begrijp de theorie er achter heel goed alleen had geen kennis van de benamingen. Maar nu dus wel! Thanks!

    By the way, ik heb het inmiddels gefixt! Zonder inderdaad window te gebruiken werkt het prima.
    Bedankt voor de hulp weer!

    Bijdrager
    2000man

    De property currentSet van het object window (window.currentSet) is inderdaad niet dezelfde als de gewone globale variabele currentSet. Dat heeft verder niks met client of serverside te maken, Javascript wordt alleen maar clientside uitgevoerd…

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.