2010-10-28 56 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"));