Javascript

Programovacie jazyky, rady, poradňa...
ElvisLM
Amateur
Amateur
Príspevky: 26
Registrovaný: 10 sep 2008, 22:36

Javascript

Príspevok od používateľa ElvisLM »

Kód: Vybrať všetko

<span id="cas"></span>
<span id="cas"></span>

<script>
var cas = <?php echo  $cas_ostava; ?>;
function naplnCas (){
cas=cas-1;
window.document.getElementById("cas").innerHTML = cas;
// vypocitana hodnota se vklada jako html dovnitr elemnetu, ktery ma id "cas"
}

naplnCas(); //naplneni na zacatku
window.setInterval("naplnCas()", 1000); //pravidelna zmena, 1000 je sekunda

</script>
Ahojtem potrebujem poradit, som zaciatocnik. Script mi ma nacitat hodnotu z PHP, ktora je prva hodnota pre casovac. Problem ale nastane ze danu hodnotu potrebujem pouzit v kode viac krat. no zobrazi sa mi vzdy iba raz. Skusal som pouzit aj namiesto getElementById -> getElementByClassName, ale bez uspechu.
lowmanek
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 977
Registrovaný: 04 apr 2010, 8:53
Bydlisko: 221B Baker Street

Re: Javascript

Príspevok od používateľa lowmanek »

Funkcii setInterval vkladas callback funkciu (nalpnCas) ako string a navyse ju volas. Precitaj si napr. http://www.w3schools.com/jsref/met_win_setinterval.asp

Kód: Vybrať všetko

// Skus namiesto:
window.setInterval("naplnCas()", 1000);

// Pouzit
window.setInterval(naplnCas, 1000);
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Javascript

Príspevok od používateľa aacid »

to ale aj tak nepomoze. php je na strane servera, javascript na strane klienta.

ked v prehliadaci otvoris svoju stranku, server zoberie tento subor, vsetko co je v <?php ?> sa vykona na strane servera, vysledok bude ciste html a to sa posle klientovi, takze v case ked sa stranka nacita tak tvoj skript uz neobsahuje riadok

Kód: Vybrať všetko

var cas = <?php echo  $cas_ostava; ?>;
ale riadok

Kód: Vybrať všetko

var cas = 10;
a potom sa zacne vykonavat javascript na strane klienta. ta hodnota sa uz nezmeni pokial ju nezmenis pomocou javascriptu.

aby to fungovalo, musis pouzit ajax, nie je to nic zlozite, len si to treba trochu nastudovat.

http://www.w3schools.com/xml/ajax_intro.asp
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Javascript

Príspevok od používateľa BX »

lowmanek OK, aacid je mimo, môžeš kľudne vložiť hodnotu aj takto, nepotrebuješ žiadny ajax, robíš to správne.

A ja tam ešte vidím problém v tom, že používaš id="cas" viac krát. To nemôžeš, atribút id je unikátny v rámci celej stránky. Preto getElementById ti vráti vždy len jeden element, nie viac.
Ak použiješ getElementsByClassName a v kóde použiješ <span class="cas"></span>, tak ti to vráti pole elementov, ktoré musíš prejsť v cykle a po jednom každému nastaviť innerHtml.
ElvisLM
Amateur
Amateur
Príspevky: 26
Registrovaný: 10 sep 2008, 22:36

Re: Javascript

Príspevok od používateľa ElvisLM »

hodnotu hned ako nacitam zmenim v javascripte cas=cas-1;
Ako, odpocitavanie mi funguje bez problemov. ale potrebujem ho na stranke zobrazit viac krat. (na dva, alebo viac tlacitok sučasne.)

<span id="cas"></span>
<span id="cas"></span>

Prvy "span" mi vypise casovac, ale druhy uz nevypise nic.....
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Javascript

Príspevok od používateľa aacid »

ok, som mimo, sorry, myslel som ze ostavajuci cas chces brat zo servera.

neviem k comu to ma sluzit ale ak je to nieco co nechces aby uzivatel ovplivnil, tak by som to aj tak prerobil, lebo takto si ktokolvek otvori ten skript a prepise tam cas na co chce a ty to nemas ako ovplivnit.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Javascript

Príspevok od používateľa BX »

Môže to byť kľudne aj takto, ak sa čas bude kontrolovať aj na servri pri vykonaní akcie. Tam sa ľahko zistí, či užívateľ švindľoval.
ElvisLM
Amateur
Amateur
Príspevky: 26
Registrovaný: 10 sep 2008, 22:36

Re: Javascript

Príspevok od používateľa ElvisLM »

nerozumiem celkom tomu cyklu.

mam to v takomto tvare, co tam mam cyklit ?

Kód: Vybrať všetko

<span class="cas"></span>
<span class="cas"></span>

<script>
var aktual_cas = <?php echo  $cas_ostava; ?>;
function naplnCas (){
aktual_cas=aktual_cas-1;
window.document.getElementsByClassName("cas").innerHTML = aktual_cas;
// vypocitana hodnota se vklada jako html dovnitr elemnetu, ktery ma class "cas"
}

naplnCas(); //naplneni na zacatku
window.setInterval(naplnCas, 1000); //pravidelna zmena, 1000 je sekunda

</script>
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Javascript

Príspevok od používateľa BX »

Kód: Vybrať všetko

  var elements = window.document.getElementsByClassName("cas");
  for( var i = 0; i < elements.length; i++ ) {
    elements[i].innerHTML = cas;
  }
ElvisLM
Amateur
Amateur
Príspevky: 26
Registrovaný: 10 sep 2008, 22:36

Re: Javascript

Príspevok od používateľa ElvisLM »

Tak to by som nedal. Funguje to, diky moc !
Napísať odpoveď