Spuštění události Javascriptu předtím, než dojde k akci

Snažím se napsat skript, aby se při přehrávání vloženého zvukového objektu změnil obrázek, který mám také vložený.

function changePic() {
document.getElementById("sound").onclick = transform(document.getElementById("pic"));
}
    
function transform (pic) {
pic.src = "";
alert ("done");
}

Problém je v tom, že když načtu stránku, kód Javascriptu se automaticky spustí, i když nekliknu na přehrát (autostart je nastaven na hodnotu false) na zvukovém objektu. Má někdo nápad, co to způsobuje?

Odpověď

Když napíšete onclick = transform(...) , voláte transform a přiřazení výsledku k onclick .

Musíte nastavit handler na anonymní funkci, která volá transform , takto:

document.getElementById("sound").onclick = function() {
    transform(document.getElementById("pic"));
};

Toto je však nesprávný způsob přidávání událostí.
Měli byste zavolat element.addEventListener / element.attachEvent . (nebo stačí použít jQuery)