Autor | Zpráva | ||
---|---|---|---|
Aaron135 Profil |
#1 · Zasláno: 18. 1. 2012, 13:37:59
Ahojte, mám problém se funkcí js, která zajišťuje refresh div každých 1000ms. Když přepnu pomocí JS nové okno pořád mi tam skáče starý text.Zkoušel sem zastavit první realod pomocí return !false;, ale nepomohlo to. Jak mám funkci zrušit?
Kód: <script type="javascript"> function refresh(url){ ......... Kod pro refresh. .... } </script> <div id="reloaddiv"></div> <a onclick="refresh("url1.php");">Okno s reloadem 1</a> <a onclick="refresh("url2.php");">Okno s reloadem 2</a> Předem dekuj za odpověd. |
||
Joker Profil |
#2 · Zasláno: 18. 1. 2012, 13:53:25
Aaron135:
Jak se nastavuje to spuštění každou sekundu? Řešením by bylo použít setInterval, výsledný interval si uložit do proměnné a později ho zrušit. Viz také časování. Mimochodem, v tom příkladu jsou blbě uvozovky (je to vidět i na zvýrazňovačí). |
||
Aaron135 Profil |
Počkat možná bych tedy měl řešení!
Funkce vypadá takto: <script> function refresh(url){ var auto_refresh = setInterval( function () { $('#reloaddiv').load(url).fadeIn("slow"); }, 1000); } </script> return !auto_refresh; ?
|
||
Joker Profil |
#4 · Zasláno: 18. 1. 2012, 14:48:26
Aaron135:
Ne. Cituji příklad ze stránky, na kterou jsem odkazoval v minulém příspěvku: proměnná2 = setInterval("akce", milisekundy); // načasuje opakovanou akci clearInterval(proměnná2); // zruší opakované načasování |
||
Aaron135 Profil |
#5 · Zasláno: 18. 1. 2012, 14:48:28 · Upravil/a: Aaron135
Zkusil sem před každým spuštěním nového intervalu smazat dosavadní tím, že jsem zadal:
window.clearInterval(autorefresh); autorefresh=setInterval(...,1000); Joker: Ale pokud tento kód zadám tak ten interval proběhne jen jednou ne? |
||
Aaron135 Profil |
#6 · Zasláno: 18. 1. 2012, 21:01:01
Ono to jako nejdřív asi 6x problikne a pak se tam realoaduje ten novej kód, ale stejně mi to tam zezačátku vadí.
Mimochodem když tam dám "clearInterval", tak už ten interval znova nejde nastavit :/. |
||
_es Profil |
Aaron135:
„před každým spuštěním nového intervalu“ „Ale pokud tento kód zadám tak ten interval proběhne jen jednou ne?“ Akého „nového intervalu“ Ako „jednou“? Pozrel si si vôbec, ako funkcia setInterval funguje?
Bude spúšťať pravidelne opakovane v zvolenom časovom intervale nejakú funkciu, dokiaľ to pravidelné opakované spúšťanie nezastavíš funkciou clearInterval .
|
||
Aaron135 Profil |
#8 · Zasláno: 19. 1. 2012, 09:53:08
Ano, to jsem samozřejmě pochopil, že setInterval spouští akci v zadaném intervalu. Já potřebuju nastavený interval #1 zastavit a nastavit #2, ale když dám clearInterval, tak mi interval #2 nejde znovu nastavit.
Viz kód: <script> function nastav_interal(){ clearInterval(interval); var interval=setInterval(akce(),1000); } function akce(){ ....kod... } </script> |
||
Joker Profil |
#9 · Zasláno: 19. 1. 2012, 09:59:07
Aaron135:
Sice tam chybí kód okolo, ale takhle to nejspíš nebude fungovat. Předpokládám, že se volá nastav_interval(), pak se nějak pokračuje a někdy později se zavolá znovu. Pak nemůže ten interval být uložený v lokální proměnné té funkce. Buď se musí použít globální proměnná, nebo se ten interval musí z funkce vrátit a pak zase předat jako parametr. |
||
Aaron135 Profil |
Hele kód okolo vypadá zhruba takto:
<script> function nastav_interval(url){ clearInterval(interval); // Tady probíha rušení již zadaného intervalu var interval = setInterval( function(){ $('#DIV').load(url).fadeIn("slow"); }, 1000); // nastavení nového } </script> <a onclick="nastav_interval('url1.php');">Okno s reloadem 1</a> <a onclick="nastav_interval('url2.php');">Okno s reloadem 2</a> |
||
_es Profil |
Aaron135:
Viď radu Jokera ohľadom lokálnej/globálnej premennej, interval je lokálna premenná funkcie nastav_interval a po skončení funkcie zanikne. Globálnu premennú definuješ mimo tej funkcie.
„setInterval(akce(),1000)“ Správne je: setInterval(akce,1000) |
||
Aaron135 Profil |
#12 · Zasláno: 19. 1. 2012, 17:17:18
Já potřebuju do té funkce s realoadem předat 2 proměnné jmeno1 a jmeno2
Tedy: function autoRefresh(jmeno1,jmeno2){ var ref = setInterval( function(){ $('#chatRoom').load('chatproperty.php?j1='+jmeno1+'&j2='+jmeno2+"&refresh=auto").fadeIn("slow"); }, 1000); } |
||
_es Profil |
#13 · Zasláno: 19. 1. 2012, 17:36:05
Aaron135:
„zrušit první interval“ Ak si do nejakej premennej uložíš návratovú hodnotu funkcie setInterval , tak ho zrušíš funkciou clearInterval . V kóde v [#12] je ref lokálna premenná funkcie autoRefresh , ktorá po skončení funkcie zanikne. Ak chceš tú hodnotu uložiť, tak si ju ulož do takej premennej, ktorá po skončení funkcie nezanikne, viď túto radu.
|
||
Aaron135 Profil |
#14 · Zasláno: 19. 1. 2012, 17:36:38
Už to mám! Dostal sem se snad na místo kde končí internet, ale našel sem že stačilo odebrat v
var ref = setInterval( function(){ $('#chatRoom').load('chatproperty.php?j1='+jmeno1+'&j2='+jmeno2+"&refresh=auto").fadeIn("slow"); }, 1000); |
||
_es Profil |
Aaron135:
> že stačilo odebrat v ... slovo var Ešte lepšie by ho bolo len neodobrať, ale aj definovať premennú mimo funkcie, viď aj Časté potíže, zajímavosti a poučné debaty » Používejte var , ale to sa ti tu už píše 4. krát.
|
||
Časová prodleva: 12 let
|
0