JavaScript basis: Waarde Plus 1

Status
Niet open voor verdere reacties.

Castaldi

Nieuwe gebruiker
Lid geworden
6 feb 2010
Berichten
4
Goedemiddag,

Ik ben bezig met een PHP-script en voor het automatisch laden van meer content en daarvoor maak ik gebruik van jQuery. Ik heb nauwelijks verstand van Javascript maat het behulp van tutorials is het me bijna helemaal gelukt, op 1 detail na. Ik vermoed dat dit iets heel simpels is, maar ik kom er maar niet uit.

Het is de bedoeling dat bij het bereiken van de onderkant van de pagina meer informatie wordt geladen door een php-script. Dat werkt, alleen moet javascript een waarde meegegeven die aangeeft welke informatie geladen moet worden. Mijn idee was om het op te delen in pagina's, en elke keer dat de javascript-functie wordt aangeroepen moet de pagina-variabele een hogere waarde krijgen.

Nu begrijp ik dat dat niet zo moeilijk is door middel van 'variable++;' maar om de een of andere reden wil het maar niet werken.

Momenteel heb ik de volgende code:

Code:
<script>
var ID = 0;
$(function(){
                $('#results').scrollPagination({
                    'contentPage': 'includes/paging/tasks.php?l=<?=$_GET[l] ?>&s=<?=$_GET[s] ?>&p='+ID, // the page where you are searching for results
                    'contentData': {}, // you can pass the children().size() to know where is the pagination
                    'scrollTarget': $(window), // who gonna scroll? in this example, the full window
                    'heightOffset': 10, // how many pixels before reaching end of the page would loading start? positives numbers only please
                    'beforeLoad': function(){ // before load, some function, maybe display a preloader div
                        $('.loading').fadeIn();    
                    },
                    'afterLoad': function(elementsLoaded){ // after loading, some function to animate results and hide a preloader div
                         $('.loading').fadeOut();
                         var i = 0;
                         $(elementsLoaded).fadeInWithDelay();
                         if ($('#results').children().size() > 100){ // if more than 100 results loaded stop pagination (only for test)
                            $('#results').stopScrollPagination();
                         }
                    }
                });
                
                // code for fade in element by element with delay
                $.fn.fadeInWithDelay = function(){
                    var delay = 0;
                    return this.each(function(){
                        $(this).delay(delay).animate({opacity:1}, 200);
                        delay += 100;
                    });
                };
                       
            });
</script>

Het is dus de bedoeling dat de variabele ID iedere keer met 1 wordt verhoogd, zodat niet dezelfde informatie wordt geladen, maar de volgende. Die variabele wordt alleen gebruikt voor de url in contentPage.

Weet iemand hoe dit te bereiken?

Alvast bedankt!!

Hartelijke groet,
Castaldi
 
Zoals je zelf al zei, gewoon ID ophogen elke keer als een pagina gevraagd wordt! Nu ken ik dat Query pagination geval niet, maar ik denk dat je gewoon in de afterLoad functie de ID kan ophogen:


[JS] 'afterLoad': function(elementsLoaded){ // after loading, some function to animate results and hide a preloader div
$('.loading').fadeOut();
var i = 0;
$(elementsLoaded).fadeInWithDelay();
if ($('#results').children().size() > 100){ // if more than 100 results loaded stop pagination (only for test)
$('#results').stopScrollPagination();
}

// okay, prima. En nu de ID omhoog:
ID++;
}[/JS]

misschien kan je ook gewoon 'valsspelen' en de URL-ID gewoon ophogen:
[JS]'contentPage': 'includes/paging/tasks.php?l=<?=$_GET[l] ?>&s=<?=$_GET ?>&p=' + (++ID),[/JS]
maar dan begint de &p wel met 1 ipv. 0 (wat weer makkelijk te veranderen is door ipv. var ID = 0; gewoon var ID = -1; te gebruiken). Maargoed.




:thumb:
 
Dank je wel voor je reactie!

Ik ging er ook vanuit dat het zo simpel zou zijn, maar om de een of andere reden blijft de waarde telkens gelijk. Iedere keer als het script wordt uitgevoerd blijft de waarde gelijk. In het geval van je eerste code is dat 0, in het tweede voorbeeld 1. Het lijkt dus wel of het script de waarde niet onthoudt.

Voor de volledigheid, ik maak gebruik van de plugin ScrollPagination (http://andersonferminiano.com/jqueryscrollpagination/).
 
Ah, dat's zo'n super hinderlijk autolaad ding :)

In ieder geval - raar. Heb je toevallig de complete code, of een online demo?

Wat je ook nog kan proberen is in die afterLoad functie een alert te gooien:
[js]alert('kijk mij!');[/js] en eens te kijken wanneer die alert nou te voorschijn komt. Als deze steeds wordt gegeven als er nieuwe dingen worden geladen, dan is er misschien iets mis met de scope van de teller-var (wat me sterk lijkt, maargoed). Voor de lol kan je eens een DOM-viewer gebruiken (zoals in Firefox met de Firebug plugin) en daar ID eens bekijken.
Wat ook nog kan is dat je pagina gecached is oid, maar evenals hierboven, een longshot.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan