2

我尝试在JavaScript中执行一些操作,然后在href公司链接的一部分:

<a href=“open.this.page”onclick=“doStuff(this);return false;title=“关注我”>

问题是做什么在里面doSuff(本)参考?我原以为必须得到href公司它是锚的一部分,但检查时它看起来像是href公司其他什么都没有。

函数doSutff(my_arg){警报(my_arg);//做一些事情//遵循链接中的href}

在上述警报中,我得到了href公司作为"网址:http://my.domain/open.this.page".

这是预期的结果吗?还是我在一个浏览器中得到它,但可能不是在另一个浏览器里?

如果这是正常的行为,那么人们将如何获得,例如相对标题锚的一部分?仅DOM?

2

3个答案

重置为默认值
4

在这种情况下指DOM节点。

“在上述警报中,我得到了href公司作为"网址:http://my.domain/open.this.page".

这是预期的结果吗?还是我在一个浏览器中得到它,但可能不是在另一个浏览器里?"

这是意料之中的。你得到的原因"网址:http://my.domain/open.this.page"在警报中,这是默认值.toString()(到字符串)值为<a>元素。

这是一个不寻常的案例。其他元素不会将属性显示为.toString()(到字符串)代表。

如果您想实际使用href公司,你需要这样做this.toString(),或参见下文。。。


“…例如,如何获得锚的REL或TITLE部分?”

要获得其他属性或属性,只需按常规方式进行即可。

要获取属性,可以执行以下操作:

onclick=“doStuff(this.getAttribute('title'));return false;”

大多数标准属性直接映射到节点上的属性,因此您也可以这样做:

onclick=“doStuff(this.title);return false;”

或者,由于您处于内联处理程序中,您实际上可以这样做:

onclick=“doStuff(title);return false;”

最后一个可以工作的原因是,从属性分配的处理程序具有唯一的范围链,其中包含元素本身。这意味着元素上的属性实际上显示为变量。

请注意,这不适用于任何其他类型的事件处理程序。


关于,它指的是处理程序绑定到的元素。

属性发生的情况是,它基本上成为分配给onclick(单击)属性。

所以你最终会得到这样的结果:

elem.onclick=函数(事件){doStuff(本);返回false;//onclick属性值}

所以你可以看到实际上只是在分配给属性的事件处理程序中找到的正常值。


注意还有一个事件参数已定义。这意味着您可以这样更改属性:

onclick=“doStuff(this,event);return false;”

…它将传递该参数,因为现在您的函数如下所示:

elem.onclick=函数(事件){doStuff(这个,事件);返回false;//onclick属性值}

所以您可以看到字符串实际上引用了正常事件函数的参数。


这也适用于较旧的IE。在IE中事件参数将不会被定义,因此它将选取全局事件对象。

//--------------v-----无参数elem.onclick=函数(){//v——现在它开始关注全球事件doStuff(这个,事件);返回false;//你的onclick属性值}

在任何事件的上下文中(onclick或其他)指触发事件的DOM元素。

在您的情况下,它是锚标记本身。

1
  • "在任何情况下。。。引用DOM元素。。。"如果你不使用微软的旧版本附件事件功能。但是的,在OP的情况下(DOM0处理程序)添加事件侦听器,大多数库,甚至element.onclick=。。。,将是元素。:-) 评论 2012年12月12日15:28

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.