2012-07-02 35 views
0

我是JavaScript新手,我正在研究如何在JavaScript中使用相同的函數來處理不同的元素。對一個函數使用不同的元素javascript

I.e.如何在函數中設置document.getElementById的id值。我不知道爲什麼我的代碼不起作用。

的JavaScript

function onhover(imgx) 
{ 
    var x = imgx; 
    document.getElementById('x').style.opacity=0.5; 
} 

HTML

<img id="img1" src="img1.jpg" onmouseout="onhover('img1')"> 
<img id="img2" src="img2.jpg" onmouseout="onhover('img2')"> 

回答

2

爲前提,所有的處理程序不應該內的標記來定義(對於邏輯和內容之間的分離的緣故),嘗試這種

<img id="img1" src="img1.jpg" onmouseout="onhover(this)"> 
<img id="img2" src="img2.jpg" onmouseout="onhover(this)"> 

function onhover(img) { 
    img.style.opacity=0.5; 
} 
+1

+1,但DOM0聯事件處理程序_so_ 1995年...... – Alnitak

+0

絕對@Alnitak:d – fcalderan

+0

感謝它的工作 – user1492721

1

對您的代碼進行微小更改 - 刪除附近的單引號。當您使用單引號或雙引號時,您傳遞字符串「x」而不是變量x的值。

function onhover(imgx) 
{ 
    var x = imgx; 
    document.getElementById(x).style.opacity=0.5; 
} 

雖然,說實話,你可以直接使用imgx;將它保存到x是有點不必要的。

+0

更好的是,通過'this'在處理程序中,每F.Calderan的答案。 .. – Alnitak

+0

@Alnitak老實說,我沒有做那個被傳遞給函數的ID的連接是元素觸發功能的ID。在這種情況下,「這個」將是更好的選擇。 –

+0

好吧,它是,但只有當你真的把它作爲參數傳遞時(對於DOM0內聯處理程序)。對於適當的DOM3(和jQuery)它是隱含的。 – Alnitak

相關問題