2010-10-28 57 views
2

如果我做這個 -幫助我瞭解什麼是錯用我的javascript

alert(anchor); 

我得到這個 -

「[對象HTMLLIElement]」

...好,是的,這是我想要的元素。所以我想獲得這個元素ID。

所以我測試它像這樣:

alert(anchor.attr("id")); 

...但我沒有得到任何警告,什麼都沒有。我不能選擇一個元素。我做錯了什麼,我不明白什麼?

+2

你使用jQuery?就像你的.attr語法意味着 – Adam 2010-10-28 22:25:44

+0

是的!看起來我發現我的問題。每個人都撞到了頭上。 – Dave 2010-10-28 22:33:58

+0

此外,你應該真的使用控制檯來調試('console.log'而不是'alert()')。警報非常困難。 http://getfirebug.com或者你的瀏覽器內置的開發工具真的有幫助。 – 2010-10-28 22:44:38

回答

8

有兩個問題:

  • .attr()是一個函數的jQuery對象有,你有一個DOM元素(你需要$(anchor)針對元素使用jQuery方法)。
  • 你不需要它反正.id property將工作(和快得多),像這樣:

alert(anchor.id); 
+4

+1提到'anchor.id'的速度增加。我厭倦了看到人們編寫低效的代碼,只是因爲他們不瞭解框架的開銷。 – stevendesu 2010-10-28 22:45:18

3

這是因爲attr不是anchor上定義的方法或屬性。 anchor是一個原始HTML元素對象。這不是一個jQuery對象(我假設你使用jQuery,因爲你使用了attr方法)。

要獲得該ID,所有你需要做的是anchor.id。如果你真的想使用attr,你可以做jQuery(anchor).attr("id")

2

attr()函數是jQuery的一部分,但您試圖從純DOM對象中獲取它。您要麼使用$(anchor)(用jQuery封裝元素),要麼改用anchor.getAttribute("id")

+1

或更確切地說:'anchor.id'。 – 2010-10-28 22:27:02

3

如果你正在使用jQuery,那麼你就需要這樣的:

alert($(anchor).attr("id"));