Olisi seuraavanlainen rakenteellinen kysymys:
Oletetaan, että mulla on html:ssä komento onResize = "teeIkkunaMuutokset();".
Nyt tässä JS funktiossa minun täytyisi muokata jo olemassa olevan olion jäsenmuuttujia, tyyliin:
teeIkkunaMuutokset() { olioKake.x = 14; }
Mutta tämä ei toimi, koska ikkunanMuuttamisFunktio ei tunne tätä kyseistä oliota, vaikka se olisi ehditty jo alustaa. Tulee virhe ilmoitus:
olioKake is not defined.
Miten ongelman voisi ratkaista?
Hyvä tapa on antaa olio parametrina, eli
function teeIkkunaMuutokset(olioKake) { olioKake.x = 14; }
Jos jostain syystä haluat käyttää globaalia muuttujaa, niin kyllä senkin pitäisi toimia. Näytä miten ja missä olet alustanut muuttujan, siinä saattaa olla virhe.
Joo, tosiaan tuo globaaliksi määritteleminen oli unohtunut, kiitokset funktio!
Paulus M kirjoitti:
globaaliksi määritteleminen oli unohtunut
Hmm. Muuttujat ovat aina oletuksena globaaleja. Esimerkki:
function f() { x = 42; } function g() { alert(x); } f(); g(); // 42
Tässä x
on globaali, vaikka se alustetaankin f
:n sisällä. Mitään erityistä määrittelyä ei tarvita.
Jos haluaa luoda paikallisen muuttujan, silloin sen eteen pitää laittaa var
:
function f() { var x = 42; } function g() { alert(x); } f(); g(); // undefined
Mutta pääasia että ongelma ratkesi. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.