Javascript'this'关键字在锚标记上返回href属性而不是Object

Rob*_*ood 1 javascript object onclick

要求:返回元素对象.
问题:使用下面的代码,我希望链接返回[object],但它们实际上返回href属性中的字符串(或者在第一个链接的情况下返回Window对象).

(下面的HTML已经在FireFox 3.6.8和Internet Explorer 7(7.0.6002.18005)中测试过,效果相同.)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Anchor onclick tests</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <div>
            <a href="javascript:alert(this);" title="">&lt;a href=&quot;javascript:alert(this);&quot;&gt;...&lt;a/&gt;</a> - Returns: [object Window]<br />
            <a href="#" onclick="alert(this);" title="">&lt;a href=&quot;#&quot; onclick=&quot;alert(this);&quot;&gt;...&lt;a/&gt;</a> - Returns: Full URI<br />
            <a href="javascript:void(0);" onclick="alert(this);" title="">&lt;a href=&quot;javascript:void(0);&quot; onclick=&quot;alert(this);&quot;&gt;...&lt;a/&gt;</a> - Returns: javascript:void(0);
        </div>
    </body>
</html>  
Run Code Online (Sandbox Code Playgroud)

添加.tagname到this关键字会返回undefined第一个链接,但会正确识别第二个和第三个链接A.同样,请求.href返回undefined第一个链接但正确输出href(在'#'的情况下为完整URI).

有谁知道为什么,以及如何控制A对象本身?

Fel*_*ing 6

正如您所说,访问第二和第三个链接中的属性.这意味着它this确实是ADOM元素,但是当它被转换为字符串时(这就是你想要alert它时会发生的事情),它会被转换为URL.

所以你已经拥有了你的对象;)

当你这样做时也是如此alert(document.location).它实际上是一个对象,但转换为字符串时,它会打印当前位置.