2012-09-19 53 views
0

可能重複:
I trying to get the target element's id when function fired, but this keyword returns undefined如何識別被點擊哪一個元素沒有修改的onclick功能

--- HTML文件---

<a href="#link_1" id="id_0" onclick = "getElement('parms1', 'parms2', 'parms3')">0</a> 
<a href="#link_2" id="id_1" onclick = "getElement('parms1', 'parms2', 'parms3')">1</a> 
<a href="#link_1" id="id_2" onclick = "getElement('parms1', 'parms2', 'parms3')">2</a> 

- - Js文件---

function getElement = function(a, b, c){ 
    // trying to get the clicked element 
    alert(this); // returns 'undefined' 
} 

注意:我不能修改/添加/刪除的onclick函數的參數,但我可以添加/刪除參數在JS文件

問題:如何確定點擊了哪個元素,而無需修改onclick函數參數?

+0

我認爲[event.target(http://api.jquery.com/event.target/)可能會幫助 – keyser

+0

event.target不會幫助,因爲該片段不包括jQuery – williamcarswell

+1

@JeremyJStarcher這似乎也需要你發送「this」作爲參數。 – keyser

回答

1

簡單的解決方法:

更改HTML到:

<a href="#link_1" id="id_0" onclick = "getElement('parms1', 'parms2', 'parms3',this,event)">0</a> 

和函數定義:

//function getElement = function(){};doesn't really make sense... 
function getElement (a, b, c,clicked,e) 
{ 
    alert(clicked.id);//alerts id of clicked link 
    alert((e.target || e.srcElement).id);//via the event object 
} 

因此,選擇是你的,必須通過thisevent的功能,或只是event,或只是this,你很好去。

你可能想看看這個委託類型的事件,雖然

相關問題