Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript';这';关键字返回href属性而不是锚标记上的对象_Javascript_Object_Onclick - Fatal编程技术网

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合作多年,从未意识到这一点。今天我学到了一些新的东西(嗯,真的很旧,但没关系)。谢谢你的回答。这当然有助于解释。谢谢你的回答。这当然有助于解释这一点。