2010-12-11 113 views
1

我想知道是否有方法通過使用getElementById獲取圖像的onclick屬性?Javascript getElementById <img>

例如

lastTopic = document.getElementById('topicID').src; 
lastTitle = document.getElementById('topicID').title; 

這些變量是存儲的,所以我想知道是否有方法訪問相關的onclick事件?

謝謝。

+1

剛一說明:'click'是一個事件。 'onclick'是一個處理程序。 – 2010-12-11 11:19:42

+1

@Alin:'onclick'是一個屬性,也是一個屬性(屬性反映屬性);你分配給它的是一個處理程序。 – 2010-12-11 11:22:35

+0

@Alin @ T.J。 Crowder onclick既不是屬性也不是處理程序。它是一個變量,它在元素對象的上下文中解釋時是指向處理程序的屬性。 – 2010-12-11 11:29:10

回答

1

你可以使用element.getAttribute(的attributeName)方法的DOM屬性值。

由於@ box9表示,您需要動態綁定onclick事件或通過圖片標記中的onclick屬性。

+0

lastClick = document.getElementById('topicID')。getAttribute('onclick'); lastClass = document.getElementById('topicID')。getAttribute('class');這是解決我的問題的解決方案。再次感謝大家。 – iTEgg 2010-12-11 13:58:15

6

當然,設置的onclick屬性:

document.getElementById('topicID').onclick = function() { 
    ... 
}; 

或者獲得它:

alert(document.getElementById('topicID').onclick); 
+0

我嘗試了get方法,但由於某種原因每次都返回null。我正在檢查,看看我是否說錯了。源和標題的作品,所以我不知道我做錯了什麼。 – iTEgg 2010-12-11 11:19:32

+0

@iEisenhower - 有沒有onclick值?如果不是,它會返回'undefined'。 – 2010-12-11 11:23:39

+0

我會考慮這一點,然後給我回應。我想你們都給了我足夠的線索來幫助我調查這個問題。謝謝。 – iTEgg 2010-12-11 11:25:10

4

重要的是要記住onclick實際上是什麼:它是一個屬性(和一個反射屬性),可以使用舊的「DOM0」(例如,從未標準化)機制將處理程序附加到click事件。

如果您使用的是標準化的機制,像addEventListener或IE近乎等同attachEventonclick仍將nullundefined因爲它們沒有被分配到onclick屬性或屬性附加click處理程序。

下面是這個diffrence的探索(live example):

HTML:

<p>This one has an onclick: 
<img src='http://www.gravatar.com/avatar/0f1f6b8a8416c6cf0a97cfc864889788?s=32&d=identicon&r=PG' id='dom0img' onclick='dom0click(this);'></p> 
<p>This one has a DOM2 click handler: 
<img src='http://www.gravatar.com/avatar/ca3e484c121268e4c8302616b2395eb9?s=32&d=identicon&r=PG' id='dom2img'></p> 

的JavaScript:在Chrome

window.onload = function() { 

    var dom0img, dom2img; 

    dom0img = document.getElementById('dom0img'); 
    dom2img = document.getElementById('dom2img'); 
    if (dom2img.addEventListener) { 
    dom2img.addEventListener('click', dom2click, false); 
    display("Attached DOM2-style handler to dom2img via addEventListener"); 
    } 
    else if (dom2img.attachEvent) { 
    dom2img.attachEvent('onclick', dom2click); 
    display("Attached DOM2-style handler to dom2img via attachEvent"); 
    } 
    else { 
    display("Can't attach DOM2-style handler to dom2img"); 
    } 

    display("dom0img.onclick = " + dom0img.onclick); 
    display("dom2img.onclick = " + dom2img.onclick); 
}; 

function dom0click(img) { 
    display("DOM0 click on " + img.id); 
} 
function dom2click() { 
    display("DOM2 click on " + this.id); 
} 
function display(msg) { 
    var p = document.createElement('p'); 
    p.innerHTML = msg; 
    document.body.appendChild(p); 
}​ 

輸出:

Attached DOM2-style handler to dom2img via addEventListener 
dom0img.onclick = function onclick(event) { dom0click(this); } 
dom2img.onclick = null

OUTP UT在IE6和IE8:

Attached DOM2-style handler to dom2img via attachEvent 
dom0img.onclick = function anonymous() { dom0click(this); } 
dom2img.onclick = null

輸出在Firefox上:

Attached DOM2-style handler to dom2img via addEventListener 
dom0img.onclick = function onclick(event) { dom0click(this); } 
dom2img.onclick = undefined
+0

+1。你說onclick將保持'空'。它會被設置爲「null」還是會「保持」「未定義」? – 2010-12-11 11:33:09

+0

@ box9:取決於瀏覽器。 (我*只是*添加了'undefined',因爲我在Firefox的結果中看到了這一點)。在大多數瀏覽器中,該屬性的默認值似乎爲'null'。 – 2010-12-11 11:34:10