Onko jQueryä käyttämällä mahdollista sijoittaa setInterval funktio $(document).ready funktion sisään? Ainoa keino millä olen tuon saanut hoidettua on kääriä koko hela hoito toisen funktion sisään:
function startTimer () {
$(document).ready(function() {
//suoritettava koodi
});
setInterval( startTimer, 3000 );
}Tuo argumentti on ihan tavallinen funktio ja sen sisään voi laittaa mitä vaan mitä muidenkin funktioiden sisään voi, mukaan lukien kutsun setInterval:iin. Vaikea arvata miten olet yrittänyt ja miksi se ei toiminut, kun et näyttänyt koodia.
Eikö tällainen toimi:
function operationToRepeat() {
// 3 sekunnin välein suoritettava koodi
}
$(document).ready(function() {
setInterval(operationToRepeat(), 3000);
});Chiman kirjoitti:
setInterval(operationToRepeat(), 3000);
Tuo ei toimi, mutta tämä toimii:
setInterval(operationToRepeat, 3000);
Ok, tuosta näkyy olevan erilaista ohjeistusta liikkeellä. Tällaistakin näkee:
setInterval("operationToRepeat();", 3000);Tuo parametri voi olla joko funktio jota kutsutaan tai merkkijono joka annetaan eval-funktiolle argumenttina. Eli:
setInterval(f, 42); -> f() 42ms välein
setInterval("f()", 42); -> eval("f()") 42ms väleinMinusta ensimmäinen tapa on kaikin tavoin parempi, mutta jostain kumman syystä monet oppaat suosivat eval:in käyttämistä.
Okei selvä homma, kiitos vastauksista. Kysynkin saman tien kysymyksen globaaleista muuttujista koska en viitsi sille omaa aihetta tehdä.
Miksi esimerkki 1 toimii, mutta esimerkki 2 ei? Kuinka tuon tausta muuttujan edes voi saada globaaliksi?
//esimerkki 1
$(document).ready(function() {
tausta = $("#snake").css("background-color");
alert(tausta);
});//esimerkki 2
tausta = $("#divi").css("background-color");
$(document).ready(function() {
alert(tausta);
});Tumettaja kirjoitti:
Miksi esimerkki 1 toimii, mutta esimerkki 2 ei?
Siksi, että jos sivu ei ole vielä ehtinyt latautua kokonaan kun koodi ajetaan, elementtiä jonka id on divi ei välttämättä ole olemassa. Juuri tästä syystä käytetään $(document).ready:ä; sille annettua parametriä kutsutaan vasta kun koko sivu on valmis.
Tumettaja kirjoitti:
Kuinka tuon tausta muuttujan edes voi saada globaaliksi?
Se on globaali ensimmäisessäkin esimerkissä. Jos haluat tehdä siitä paikallisen jonkun funktion sisällä, laita var tausta = ...;.
Ookei, kiitoksia selvennyksestä (;
Aihe on jo aika vanha, joten et voi enää vastata siihen.