在动作发生之前触发Javascript事件

时间:2011-02-13 03:24:54

标签: javascript object audio javascript-events

我正在尝试编写一个脚本,以便在播放嵌入式声音对象时,我嵌入的图片也会发生变化。

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

function transform (pic) {
pic.src = "";
alert ("done");
}

问题在于,当我加载页面时,即使我没有在声音对象上单击播放(自动启动设置为false),Javascript代码也会自动运行。有没有人知道造成这种情况的原因是什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

当您撰写onclick = transform(...)时,您致电 transform并将结果分配给onclick

您需要将处理程序设置为调用transform的匿名函数,如下所示:

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

但是,这是添加事件的错误方法 您应该致电element.addEventListener / element.attachEvent。 (或者只使用jQuery)