Zelf startende functie

Status
Niet open voor verdere reacties.

phobia

Terugkerende gebruiker
Lid geworden
4 sep 2006
Berichten
1.777
Ik ben nogal nieuw in jquey.
En nu ben ik bezig dat een div automatisch geupdate word.

Maar ik heb geen flauw idee hoe ik in jquery een functie automatisch kan laten starten. En daarna zichzelf blijft uitvoeren.

De functie die gestart moet worden is een functie die aan de hand van .load gegevens mbv een php file gegevens uit een bestand ophaalt.
 
Je kunt dingen laten beginnen zodra de pagina klaar is door ze aan $(document).ready() te hangen.

Om ze te laten herhalen moet je de setInterval functie gebruiken.

[js]
$(document).ready() {
setInterval( 'eenFunctie', 1000 );
}

function eenFunctie () {
// content hier
}
[/js]

Dit zou elke seconde (setInterval is in milliseconden) eenFunctie() aan moeten roepen. Niet getest, maar dit is het principe ;)
 
maar met setinterval, dan wordt de functie toch gestart ongeacht of de functie daarvoor nu wel of niet klaar is.

Mij staat bij dat er ook een manier is dat je de functie pas opnieuw laat start als de vorige functie aanroep klaar is.
 
Ik vind het vreemd, ik doe schijnbaar iets fout.

[JS] <script type="text/javascript">
$(document).ready()
{
setInterval("update()", 1000);
}

function update()
{
$('<div id="info" />').load('php/time/RStime.php?site=<?PHP echo $_SESSION['site'];?>', function()
{
$('#Rtime').empty();
$(this).appendTo('#Rtime');
});
$('<div id="info" />').load('php/time/DBtime.php?site=<?PHP echo $_SESSION['site'];?>', function()
{
$('#Btime').empty();
$(this).appendTo('#Btime');
});
}

$(function()
{

$('a').click(function()
{
var url = this.id;
$('#display').empty();
$('<div id="info" />').load('html/'+url+'.php', function()
{
$(this).appendTo('#display');
});
return false;
})
});[/JS]
Nu werk het update gedeelte wel, maar doet de $(function() het niet meer.
En deze werkte wel voor ik update functie erbij maakte!

En het lijkt dat het probleem zich alleen in IE zich voordoet.
Heb het met firefox getest en de foutconsole geeft nix aan.
 
Laatst bewerkt:
load('php/time/RStime.php?site=<?PHP echo $_SESSION['site'];?>'

Dit gaat fout, je aanhalingstekens staan niet goed. In ['site'] sluit je de string weer af, en daardoor loopt de boel in de soep. Je kunt het beste de buitenste aanhalingstekens vervangen door dubbele "

Ook op andere plekken in het script waarschijnlijk.
 
Nope, is het niet.

Ik heb
load("php/time/RStime.php?site=<?PHP echo $_SESSION['site'];?>"

en
load('php/time/RStime.php?site=<?PHP echo $_SESSION["site"];?>'

Gedaan bij allebij de regels, maar de error blijft bestaan.
Het script werkt wel, en in firefox krijg ik helemaal geen error.
Puur en alleen in IE6 en IE8.
 
Ik heb
$(document).ready()
{
setInterval("update()", 1000);
}

laten vervallen en setInterval("update()", 1000);
in de $(function() gezet.

Ik gok dat $(function() en $(document).ready() een confilct krijgen als je ze op een pagina gebruikt.
 
Weet hier nou serieus niemand de correcte syntax van javascript?

Je hoeft alleen simpel naar de jQuery documentatie te kijken en je ziet al dat de handler als parameter moet gegeven worden aan $.ready(), zo dus:

[JS]
$(document).ready(function() {
setInterval("update()", 1000);
});
[/JS]

Je kan het ook beter zo doen: zet aan het einde van je update() functie het volgende:
[JS]
setTimeout(update, 1000);
[/JS]

En laat bij het laden van de pagina update() één keer uitvoeren. Nu kun je binnenin de functie controleren of de functie nog een keer aangeroepen moet worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan