Jak odczytać wartość zmiennej globalnej wewnątrz funkcji?

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ć.

http://php.net/manual/pl/language.variables.scope.php

 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  :)