2010-05-10 101 views
3

我打電話內聯JavaScript函數的onclick像這樣:JavaScript的onclick處理程序不調用

<a href="#" onclick="removeAttribute('foo', 'bar');">Some Link</a> 

當我點擊鏈接,但是,沒有任何反應。我有其他的鏈接(與其他功能)綁定到onclicks,可以在同一頁面的其他地方正常工作。到這個「removeAttribute」函數的所有鏈接失敗。

Firebug中沒有錯誤,並且正在調用onclick事件處理程序 - 但是由於某種原因,步入removeAttribute函數最終會在jQuery.js中的某處出現。 removeAttribute從來沒有被調用過。

如果我做的:

javascript:removeAttribute('foo', 'bar'); 

在Firefox的地址欄中。該功能已成功調用。

任何人看到這?

+2

也許如果我們能看到的功能的removeAttribute我們可以提供更多的幫助的定義。你說,「所有鏈接到這個」removeAttribute「功能失敗」,所以我敢冒險,該功能有什麼問題。 – BradBrening 2010-05-10 23:11:20

+0

歡迎來到SO +1 – Gabe 2010-05-10 23:11:55

回答

4

你打電話給自己的方法嗎?如果是這樣,將其稱爲removeAttribute會令人困惑,因爲它已經被定義爲連接到DOM節點的方法。當你的事件處理程序被調用時,它的作用域被定義爲被點擊的節點。你的代碼可能調用了被點擊的對象的內置方法。嘗試使用不同的名稱或將您的方法放入Javascript對象中,以便您可以明確調用它。

+0

啊哈!這是它正是:)更改函數名稱的其他工作。謝謝 :) – potatolicious 2010-05-10 23:30:47

1

試試這個:

<a href="javascript:removeAttribute('foo', 'bar');">Some Link</a> 

它可能不工作因爲對於href值, '#'。因此,將javascript作爲href,與將其放入地址欄中效果相同。

+0

謝謝!這工作。我還想知道的奇怪的是 - 我有很多其他鏈接在同一頁上使用「#」有HREF,他們工作得很好... – potatolicious 2010-05-10 23:08:58

+2

不,這是一個非常醜陋的解決方案。 – Pointy 2010-05-10 23:13:21

+0

@Pointy,同意。 – Gabe 2010-05-10 23:19:30

0

如果您使用jQuery,爲什麼不利用它?假設你的removeAttribute()版本做同樣的事情作爲本地JavaScript方法removeAttribute(),你可以這樣做:

<script type='text/javascript'> 
    $(document).ready(function(){ 
     $('a#somelink').click(function(){ 
      $('#foo').removeAttr('bar'); 
     }); 
    }); 
</script> 
相關問題