onclick和href =“javascript:函数名称有什么区别?

时间:2010-04-05 15:59:40

标签: javascript

之间有什么区别吗?
1 : <a href="javascript:MyFunction()">Link1</a>

2 : <a href="#" onclick="MyFunction()">Link2</a>

? 是否会以任何方式影响页面性能?

6 个答案:

答案 0 :(得分:10)

如果您的元素实际上不应该在某个地方链接用户,不会使其成为锚元素。如果您使用<a>标签只是为了获得下划线/光标更改 - 请不要。在<span>(或其他元素)上使用CSS。

span.link {
  text-decoration: underline;
  color: blue;
  cursor: pointer;
}

只有在想要将用户链接到某个地方时,才能保留HTML语义并使用锚元素。

答案 1 :(得分:7)

没有性能差异。

第一个是垃圾,因为没有启用JS的用户会完全失败。

第二个仍然是废话,但如果href指向未启用JS的用户的URL,则会更好。

答案 2 :(得分:4)

onclick版本允许您将'this'作为参数传递,因此您可以返回点击来自的标记/对象​​。协议方法无法实现:

<a href="#" onclick="alert(this.innerHTML)">yo yo yo</a>

会吐出一个警告弹出窗口“yo yo yo”,而

<a href="javascript:alert(this.innerHTML)">yo yo yo</a>

将吐出'undefined'。

答案 3 :(得分:1)

如果用户没有启用j,则href =“javascript:doSomething”表示您没有要回退的网址。

因此,设置href =“something.html”和onclick =“return doSomething()”通常被认为更好,因为如果禁用js,您可以导航到新页面,但如果启用了js,则可以返回false防止导航到链接并在没有页面刷新的情况下在同一页面中显示内容。

更好的是,不要添加onclick内联,只需在页面加载时添加js处理程序。这是不引人注目的方式

答案 4 :(得分:-1)

功能有所不同,第一种不会尝试处理链接。第二个。

然而,我同意Coronatus - 两种方法都不理想。我建议研究不引人注目的JavaScript(可能使用jQuery),因为您可以动态地向元素添加点击事件。

答案 5 :(得分:-1)

如果您的网站需要Javascript才能正常运行,那么href中的Javascript最好,因为它会在状态栏中显示链接并保持代码紧凑。在href中还提供没有鼠标的键盘导航。如果您的网站需要在没有Javascript的情况下运行,那么您必须使用onclick,以便href可以在其中包含链接。在单独的Javascript文件中添加操作无法保持代码和&amp;数据紧紧束缚。