Permalänk
Medlem

javascript, getElementById

Tjo, är ny på javascript och kan inte greppa varför den inte vill ta denna lilla kodsnutt.
Bilderna ska bytas på klick samt byta tillbaka efter ett tag.

function reset_pics(x) { document.getElementById(x).src="koala.jpg"; } function change_pic1() { var image = document.getElementById("pic1"); image.src="penguins.jpg" } function change_pic2(){ var image = document.getElementById("pic2"); image.src="penguins.jpg"; var idStr = image.id; // Get the id. setTimeout(reset_pics(idStr),800); }

Vore väldigt uppskattat om någon kunde förklara vad som är galet.

Visa signatur

Han är pigg!?

Permalänk
Medlem

; på rad 8

Visa signatur

asd

Permalänk
Medlem

Nu är jag jättetrött och så där, men tycker setTimeout-anropet ser lite tokigt ut. Testa byt ut det mot nedanstående och se om det hjälper:

setTimeout(function() { reset_pics(idStr); }, 800);

Skickar man en funktion som första argument fungerar det som en referens till funktionen i fråga, varför det inte går att stoppa in en funktion så som du gjort. Lösningen på detta är att anropa funktionen reset_pics i en anonym funktion istället. (Den här förklaringen kändes rätt galen, men äsch, så får det gå om man är trött!)

Hoppas det hjälper!

Förresten, när jag tänker efter, anropas någonsin de de två changepic-funktionerna? Dessutom kommer du få "pic2" som id när du hämtar ut attributet id från image.id, om jag inte tänker fel, varför det hela känns väldigt reduntant.

Visa signatur
Permalänk
Medlem
Skrivet av Rlx:

; på rad 8

Det verkar inte vara så många som vet detta men semikolon är frivilliga i javascript..

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Tack Zetsu, fungerade med den lilla ändringen, får läsa på om det där känner jag, finns säkert trådar i forumet bla. Changepic funktionerna anropas med en onClick på bilden.

Visa signatur

Han är pigg!?

Permalänk
Medlem
Skrivet av Teknocide:

Det verkar inte vara så många som vet detta men semikolon är frivilliga i javascript..

Validerar man koden mot någon jättehård validator, eller försöker köra koden i något i stil med IE6, så kommer man få ett litet "nej", men det är som du säger frivilligt. Däremot vill jag tipsa alla som vill plocka bort sina semikolon att inte göra det, då de i mina ögon gör koden aningen (kanske ganska mycket till och med) tydligare!

Skrivet av Domestic:

Tack Zetsu, fungerade med den lilla ändringen, får läsa på om det där känner jag, finns säkert trådar i forumet bla. Changepic funktionerna anropas med en onClick på bilden.

Trevligt att kunna vara till hjälp! Just det där är en sådan grej som är lätt att missa, och svår att förklara varför den inte fungerar, tycker jag. Lycka till med fortsatt Javascript-kodande hur som helst!

Visa signatur