Witam sedecznie. Piszę mały program javascript na swoją stronę i mam mały problem. Dodam że jest to moja pierwsza aplikacja w javascrpit oraz pierwszy kontakt z tym językiem programowania. A teraz do rzeczy. Mam zmienną globalną o nazwie np. zmienna1 , do której jest przypisana wartość zmiennej z kodu php. chcę teraz posługiwać się oryginalną wartością zmienna1 wewnątrz funkcji . Kiedy próbuję korzystać ze zmienna1 wewnątrz funkcji to pisze że zmienna ta jest undefined . Proszę o pomoc.
window.zmienna1 = ‘coś tam’;
i w funkcji w ten sam sposób, pewnie po drodze gdzieś tam nadpisujesz.
oto mój kod javascript :
dodam jeszcze ze zmienna1 przechowuje informacje czy ktoś jest zalogowany > 1, lub niezalogowany > 0
<script>
function zmiana(a,zalogowany)
{
my_div = document.getElementById('test');
if(a == 'guest')
{
my_div.innerHTML = '<b>Nick : </b><input type="text" placeholder=" Nick" name="nick">';
}
else if(a == 'user')
{
if(zmienna1 == 0)
{
my_div.innerHTML = '<a href="#loginek">zaloguj się</a> lub <a href="register.php">zarejestruj</a>';
}
}
}
</script>
Jak wspomniał poprzednik zmienne globalne to takie zdefiniowane w obiekcie “window”. Żeby było poprawnie warto też przez deklaracją zmiennej użyć słowa kluczowego “var”, chociaż przeglądarki są na tyle wyrozumiałe, że będzie działać i bez tego.
W każdym razie:
var mojaZmienna = “ala ma kota”;
jest tym samym co:
window.mojaZmienna = “ala ma kota”;
W jaki sposób dodajesz ta zmienną “zmienna1”? Generalnie powinno to działać. Może zapomniałeś o otoczeniu <script>…</script>?
Ewentualnie problem może być też w kolejności ładowania, jeśli wywołujesz funkcję zmiana w trakcie ładowania strony. Pierwsze wywołanie powinno być dopiero po pełnym załadowaniu:
document.onreadystatechange = function () {
if (document.readyState === “complete”) {
zmiana();
}
}
Nie wiadomo o co Ci chodzi. Daj kod wywołujący błąd. Funkcja javascriptowa, która podałeś wygląda w porządku. Prawdopodobnie źle ją wywołujesz, spróbuj ją wywołać tak:
zmiana(‘user’,0)
i wszystko powinno być w porządku.
Jak chcesz użyć zmiennych globalnych w funkcji php to używasz global. W JS nie trzeba tego robić.
ja dodaję zmienną “zmienna1” w kodzie php :
<?php
$sesyjna=$_SESSION['zalogowany'];
print "<script type='text/javascript'><!--\n";
print " var zmienna1 = $sesyjna\n";
print "//--></script>\n";
?>
nie wywala mi żadnego błędu ale gdy napiszę : _document.write(zmienna1); _to wypisuje mi undefined
A wklej kod HTML generowany przez ten kod PHP. Może brakuje apostrofów (no i średnika :mrgreen: )?
dziękuję za wszystkim za pomoc. Udało mi się rozwiązać problem :)