Javascript 'this' 关键字返回 href 属性而不是 anchor 标记上的对象

标签 javascript object onclick

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

(以下 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>  

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

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

最佳答案

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

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

当您执行 alert(document.location) 时也会发生同样的情况。它实际上是一个对象,但当转换为字符串时,它会打印当前位置。

关于Javascript 'this' 关键字返回 href 属性而不是 anchor 标记上的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3363848/

相关文章:

java - 尝试多次调用 ANT 目标时失败

javascript - Momentjs 不打印格式化日期中的秒

javascript - 如何延迟在 [(ngModel)] 中获取数据?

javascript - 单击 img 链接以更改 div 内的文本

javascript - 如何在一行中进行多次点击 (HTML/CSS/JS)

javascript - 使用 CSS 滑动按钮/菜单

javascript - 如何遍历复杂的 Json 对象并对每个等于特定值的属性做一些事情

oop - Ada Finalization Adjust 程序 - 放在这里什么?

javascript - Object.assign 的意外输出

javascript - 包括 href 和 onclick 到 HTML <a> 标签