MeGusta
31.10.2015, 14:26:20
Witam, mam problem ponieważ nie mogę przekazać zmiennej php do zmiennej js. Zmienna tab jest pusta. Ogólnie chcę aby co 5 sekund jedna wartość z tablicy się wyświetlała.
<?php
$string = Array('cios pierwszy', 'cios drugi', 'cios trzeci', 'cios czwarty', 'cios piąty');
?>
<script type="text/javascript">
var tab = eval(
<?php echo trim($string,',');?>);
for(var i = 0; i < tab.length; i++){
setTimeout(function() {
document.getElementById("battle").innerHTML= tab[i]+ "<br>";
}, 50);
}
</script>
viking
31.10.2015, 14:58:25
PHP działa po stronie serwera, JS po stronie klienta (widzi wynik generowania PHP). Nie ma opcji aby w bezpośredni sposób te dwie strony widziały swoje zmienne. Możesz np zapisać jako JSON i wysłać Ajaxem.
MeGusta
31.10.2015, 15:00:41
Okej, dziękuję. Jeszcze jakbyś mi mógł powiedzieć czemu mi wyswietla wszystkie na raz elementy zamiast co 5 sekund jedno.
viking
31.10.2015, 15:05:13
5 sekund to 5000ms nie 50
MeGusta
31.10.2015, 15:25:24
W swoim skrypcie mam 5000 i wyświetla 1 rekord lub wszystkie na raz.
a powinno być, 1 rekord z tablicy, 5 sekund, 2 rekord z tablicy 5 sekund itd. Co zrobiłem źle?
trueblue
31.10.2015, 15:31:37
Jeśli tablica elementów nie zmienia się, to musisz po prostu poprawnie wdrukować jej elementy w kodzie JS.
Pętla for nie jest tu potrzebna, a zamiast setTimeout powinieneś użyć setInterval, tam pobierać element z tablicy, zwiększać indeks tablicy, a w przypadku maksimum, zerować.
MeGusta
31.10.2015, 15:36:19
Kurczę, nie bardzo rozumiem, mógłbys dac jakis przykład?
trueblue
31.10.2015, 16:09:16
Kod
var tab=array('cios pierwszy', 'cios drugi', 'cios trzeci', 'cios czwarty', 'cios piąty'); // tu tablica wdrukowana w php
var index=0;
setInterval(function() {
document.getElementById("battle").innerHTML= tab[index++]+ "<br>";
if(index==tab.length) index=0;
},5000);
MeGusta
31.10.2015, 16:23:22
Dziękuję bardzo, ostatnią prośbe mam do Ciebie, jak moge zrobić aby wyśiwetlało się tylko raz? bo aktualnie się wyswietla w kółko.
viking
31.10.2015, 16:44:32
Kod
var index = 0;
var f = setInterval(function() {
document.getElementById("battle").innerHTML = tab[index++] + "<br>";
if (index === 5) {
clearInterval(f);
}
}, 1000);
MeGusta
31.10.2015, 17:03:01
Problem w tym że ilość elementów w tablicy będzie różna, a nie tak jak napisałeś 5 elementów. Jak mogę to zrobić żeby pasowało do dowolnej ilości elementów?
Tak? :
if (index === tab) {
clearInterval(f);
}
viking
31.10.2015, 17:45:50
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.