Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JS: muuttujan välittäminen

Paulus M [19.09.2009 16:27:07]

#

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?

jlaire [19.09.2009 17:24:55]

#

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.

Paulus M [19.09.2009 17:36:47]

#

Joo, tosiaan tuo globaaliksi määritteleminen oli unohtunut, kiitokset funktio!

jlaire [19.09.2009 17:42:39]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta