2012-01-18 67 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和其他情況。