2012-01-18 28 views
1

我想通过addEventListener点击它时动态地更改图片。我在documents.images数组中有图片。我已经写了一个函数来切换图像。我遇到的问题是在点击图像时绑定这个问题。document.images上的JavaScript addEventListener

这是我试过

document.images[i]src.addEventListener("click", MakeMove, false); 
+0

你错过了一个“。”在[i]之后,这可能是问题所在。 – CBusBus 2012-01-18 04:33:20

回答

3

你想将事件添加到实际的图像:

document.images[i].addEventListener("click", MakeMove, false); 

但旧的浏览器不支持这些DOM 2级事件处理程序,因此,假设这些图像不必具有多个点击处理程序,请考虑做

document.images[i].onclick = MakeMove; 

编辑

将参数传递给MakeMove,你会设置onclick到与任何值你调用MakeMove一个匿名函数需要:

document.images[i].onclick = function() { 
    MakeMove(12); 
} 

从原始代码:

document.images[i]src 

无效,并且

document.images[i].src 

将是一个字符串,你显然不能添加事件处理程序。

+1

+1包含DOM 0方法。值得一提的是,如果只需要一个监听器,DOM 0可能是最好的,因为它无处不在的支持。 – RobG 2012-01-18 04:57:30

+0

@RobG - 是的 - 语法也更简单:) – 2012-01-18 05:02:15

+0

我遇到了一个问题。 MakeMove函数需要一个整数参数。然后该参数将确定要切换到的图像。我相信这是问题所在,而这正是我点击图片时没有任何事情发生的原因。 – 2012-01-18 06:18:49

1

它看起来像你有一个语法错误。

尝试:

document.images[i].addEventListener("click", MakeMove, false); 

需要直接添加事件侦听器的图像对象。使用JSLint(www.jslint.com)以确保将来避免这种错误!

注意:这只会在浏览器支持(主要是除IE之外的所有东西).addEventListner。使用库可能更好,所以你不必担心这一点,但如果你需要,.attachEvent('onclick',MakeMove)将处理IE和其他情况。