Javascript';这';关键字返回href属性而不是锚标记上的对象
要求:返回元素对象。Javascript';这';关键字返回href属性而不是锚标记上的对象,javascript,object,onclick,Javascript,Object,Onclick,要求:返回元素对象。 问题:使用下面的代码,我希望链接返回[object],但它们实际上返回href属性中的字符串(或者在第一个链接的情况下,返回窗口对象) (以下HTML已经在FireFox 3.6.8和Internet Explorer 7(7.0.6002.18005)中进行了测试,结果相同。) 锚点点击试验 -返回:[对象窗口] -返回:完整URI -返回:javascript:void(0); 将.tagname添加到此关键字会返回第一个链接的未定义的,但正确地将第二个和第三个链接
问题:使用下面的代码,我希望链接返回[object],但它们实际上返回href属性中的字符串(或者在第一个链接的情况下,返回窗口对象) (以下HTML已经在FireFox 3.6.8和Internet Explorer 7(7.0.6002.18005)中进行了测试,结果相同。)
锚点点击试验
-返回:[对象窗口]
-返回:完整URI
-返回:javascript:void(0);
将.tagname
添加到此关键字会返回第一个链接的未定义的,但正确地将第二个和第三个链接标识为A
。同样,请求.href
会为第一个链接返回未定义的,但会正确输出href(在“#”的情况下为完整URI)
有人知道为什么,以及我如何才能控制a
对象本身吗?当调用alert
时,将在内部调用toString
方法,因此对于锚通知href的情况,锚的toString将返回href
<a id="foo" href="blah">fsdjl</a>
这将证实这一点
对于窗口
,此
未绑定到锚拥有的方法,因此此
引用全局上下文onclick
绑定到锚定,因此该
即当前执行上下文将更改为锚定
<a href="#" onclick="javascript:alert( this.nodeName )">blah</a>
结果是它向节点名A
发出警报,因此如果设置了href
,浏览器会返回href
,因此它更“可读”,更不模糊。当调用警报时,会在内部调用toString
方法,因此对于向href发出警报的锚,锚的toString返回href
<a id="foo" href="blah">fsdjl</a>
这将证实这一点
对于窗口
,此
未绑定到锚拥有的方法,因此此
引用全局上下文onclick
绑定到锚定,因此该
即当前执行上下文将更改为锚定
<a href="#" onclick="javascript:alert( this.nodeName )">blah</a>
结果是它会提醒节点名A
,因此如果设置了href
,浏览器会返回href
,这样它更“可读”,更不模糊。正如您所说,访问第二个和第三个链接中的属性是有效的。这意味着this
确实是A
DOM元素,但是当它被转换为字符串时(当您想要alert
it时会发生这种情况),它会被转换为URL
那么您已经有了对象;)
执行警报(document.location)
时也会发生同样的情况。它实际上是一个对象,但当转换为字符串时,它会打印当前位置。正如您所说,访问第二个和第三个链接中的属性是有效的。这意味着this
确实是A
DOM元素,但是当它被转换为字符串时(当您想要alert
it时会发生这种情况),它会被转换为URL
那么您已经有了对象;)
执行警报(document.location)
时也会发生同样的情况。它实际上是一个对象,但当转换为字符串时,它会打印当前位置。“this”指的是执行上下文。对于第一种情况,“this”指的是全局对象,即窗口对象。对于后两种情况,“this”指的是“一个”对象。“this”指的是执行上下文。对于第一种情况,“this”指的是全局对象,即窗口对象。对于后两个“this”指的是“a”对象。谢谢你的回答。我与js合作多年,从未意识到这一点。今天我学到了一些新的东西(嗯,真的很旧,但没关系)。谢谢你的回答。我与js合作多年,从未意识到这一点。今天我学到了一些新的东西(嗯,真的很旧,但没关系)。谢谢你的回答。这当然有助于解释。谢谢你的回答。这当然有助于解释这一点。