http://gocom.primeton.com/blog21307_27051.htm

我以前在写<A>的href和onclick一直很随意,后来出过几次问题,以后才开始重视这个问题:

首先摘录一篇文档:

在Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

void 操作符用法格式如下: 
1. javascript:void (expression) 
2. javascript:void expression

expression 是一个要计算的 Javascript 标准的表达式。表达式外侧的圆括号是选的,但是写上去是一个好习惯。 (实现版本 Navigator 3.0)

你以使用 void 操作符指定超级链接。表达式会被计算但是不会当前文档处装入任何内容。

下面的代码创建了一个超级链接,当用户以后不会发生任何事。当用户链接时,void(0) 计算为 0,但 Javascript 上没有任何效果。

<A HREF="javascript:void(0)">单此处什么也不会发生</A>

下面的代码创建了一个超级链接,用户单时会提交表单。

<A HREF="javascript:void(document.form.submit())"> 
单此处提交表单</A>

下面代码则执行了subgo()函数,

<a href="javascript:void(0)" οnclick="subgo()">点我</a>

在这里,javascript:void(0),没启实质上的作用,它仅仅是一个死链接,执行的函数是subgo()。

<a href="#" οnclick="subgo()">点我</a>与<a href="javascript:void(0)" οnclick="subgo()">点我</a>区别。

实际上 #包含了一个位置信息默认的锚是#top 也就是网页的上端 ,而javascript:void(0) 仅仅表示一个死链接,没有任何信息。所以调用脚本的时候最好用void(0)

href一般是指向一个URL地址,也可以调用javascript ,如href="javascript:xxx();",文档中推荐这样写:<a href=" javascript:void(0)" οnclick="xxx();">xx</a>,但是这种方法在复杂环境有时会产生奇怪的问题,尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。

我们知道链接的 onclick 事件被先执行,其次是 href 属性下的动作(页面跳转,或 javascript 伪链接),如果不想执行href 属性下的动作执行,onclick 需要要返回 false ,一般是这样写οnclick="xxx();return false;".

TabPane的JS源码,由于onclick没有返回FALSE,当IFRMAE中关闭TABPANE时会导致href执行,页面显示有问题。解决办法就是将下面代码复制到使用TAB的JSP中。

TabPane.prototype.appendTitle = function(tabpage){
  var td = $create("td");
  var strHTML = "<table class="" + TAB_STYLE_TABLE  + "" border="0" cellspacing="0" cellpadding="0"><tr>";
  strHTML +="<td><div class=""+TAB_STYLE_LEFT+""></div></td>";
  strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">";
  strHTML +="<div style="white-space:nowrap;page-break-before: always;page-break-after: always;">";
  strHTML += tabpage.getTitle();
  strHTML +="</div></td>";
  if(tabpage.showCloseButton){
   strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">";
   strHTML +="<a class="close" href="#" οnclick="$o(\"" + this.id + "\").getTab(\"" + tabpage.id + "\").close();return false;">";
   if(isIE){
    strHTML +="<div></div></a>";
   }else{
    strHTML +="<div class="close"></div></a>";
   }
   strHTML +="</td>";
  }
  if(tabpage.allowReload){
   strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">";
   strHTML +="<a class="reload" href="#" οnclick="$o(\"" + this.id + "\").getTab(\"" + tabpage.id + "\").reload();return false;">";
   if(isIE){
    strHTML +="<div></div></a>";
   }else{
    strHTML +="<div class="reload"></div></a>";
   }
   strHTML +="</td>";
  }
  strHTML +="<td><div class=""+TAB_STYLE_RIGHT+""></div></div>";
  strHTML +="</td></tr></table>";
  td.className = TAB_STYLE_NOMAL + this.styleSuffix;
  td.innerHTML = strHTML;
  tabpage.__titleTD = td;
  tabpage.setTitleTD();
  tabpage.initStatus();
  this.__titleTR.insertBefore(td,this._titleTD);
  tabpage.titleWidth = td.offsetWidth;
}

<a href='javascript:function()'> 这样写是为了让这个链接不要链接到新页面转而执行一段js代码。和onclick能起到同样的效果,一般来说,如果要调用脚本还是在onclick事件里面写代码,而不推荐在href='javascript:function()' 这样的写法,因为 href 属性里面设置了js代码后,在某些浏览器下可能会引发其他不必要的事件。造成非预期效果。而且 onclick事件会比 href属性先执行,所以会先触发 onclick 然后触发href,所以如果不想页面跳转,可以设置 onclick里面的js代码执行到最后返回一个false,这样 href 里面的东西就不会执行了。在ajax应用程序中,多写着下面的这样 ,以表示这个链接不跳转,而执行一段js脚本。<a href="javascript:void(0);" οnclick="function()"></a>或者 <a href="javascript:;" οnclick="function()"></a>void(0) 只是用来计算一个空值,其实也是什么事情都不做,而分号“;”则表示是一个空的js语句,这样就不会有任何其他跳转发生了,而且W3C标准不推荐在href里面执行javascript语句,所以还是用 onclick事件触发吧

如果不设置 href属性在IE6下面会不响应hover。双击后会选中标签的父容器而非这个一a标签(IE下都存在这一问题)。

 代码如下 复制代码
<a href="javascirpt:fn(this)"> <a οnclick="fn(this)">

假定我们有个fn方法,需要取到这个元素,第一个方法传入的this是空值。

所以,比较推荐的写法是

 代码如下 复制代码
<a href="javascript:void(0)" οnclick="fn(this)">

下面代码则执行了subgo()函数,

 代码如下 复制代码

<a href="javascript:void(0)" οnclick="subgo()">点我</a>

在这里,javascript:void(0),没启实质上的作用,它仅仅是一个死链接,执行的函数是subgo()。

 代码如下 复制代码

<a href="http://blog.163.com/wb_zhaoyuwei/blog/#" οnclick="subgo()">点我</a>与<a href="javascript:void(0)" οnclick="subgo()">点我</a>区别。

实际上 #包含了一个位置信息默认的锚是#top 也就是网页的上端 ,而javascript:void(0) 仅仅表示一个死链接,没有任何信息。所以调用脚本的时候最好用void(0)

href一般是指向一个URL地址,也可以调用javascript ,如href="javascript:xxx();",文档中推荐这样写:<

 代码如下 复制代码
a href="http://www.111cn.net/zhongxing/U880/ javascript:void(0)" οnclick="xxx();">xx</a>,

但是这种方法在复杂环境有时会产生奇怪的问题,尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。

我们知道链接的 onclick 事件被先执行,其次是 href 属性下的动作(页面跳转,或 javascript 伪链接),如果不想执行href 属性下的动作执行,onclick 需要要返回 false ,一般是这样写οnclick="xxx();return false;".

TabPane的JS源码,由于onclick没有返回FALSE,当IFRMAE中关闭TABPANE时会导致href执行,页面显示有问题。解决办法就是将下面代码复制到使用TAB的JSP中。

Html A标签中 href 和 onclick 同时使用的问题 优先级别

1 顺序 
ie 6 : href 先触发 onclick 后触发 
其他浏览器 先触发onlick 后触发 href

2 href="javascript: xxx()" 
不能传入this作为参数 
onclick可以

 代码如下 复制代码
<a href="javascript:alert('href event');" οnclick="clickevent(this);">

3 优先触发的方法如果返回 false 导致后一个事件不被触发 
比如

 代码如下 复制代码
<a href="javascript:alert('href event');" οnclick="clickevent(this); return false;">


<a href="#"> 会导致页面定位到书签位置,


由于 1和 4 的原因 
在ie6 下 同时有 <a href="#" 和 onclick的时候 由于页面先因为href重新载入了一次,导致 onclick事件被浏览器丢弃。

6 总结: 
1) 在不需要传递this作为方法的参数时候,推荐 
只使用href="JavaScript: "

2) 如果需要使用this参数,推荐

 代码如下 复制代码
<a href="javascript:void(0);" οnclick="doSomthing(this)" > 

如下面一个列子。
我们需要A在第一次和第二次点击的时候 访问 href 第3次以后的就访问另一个地址

 代码如下 复制代码

var href=0

function clicka(obj)
{
 if (href==2)
 {
  obj.href="http://www.baidu.com?qc";
 }else
 {
  href++;
 }
 return true;
 
}

<a href="http://www.111cn.net/" target=_blank id="showa" οnclick="clicka(this)">  开屏高速下载 </a>

在a标签的href与onclick中使用javascript的区别

链接的 onclick 事件被先执行,其次是 href 属性下的动作(页面跳转,或 javascript 伪链接); 
假设链接中同时存在 href 与 onclick,如果想让 href 属性下的动作不执行,onclick 必须得到一个 false 的返回值。不信,你可以将 goGoogle 函数中的 return false 注释掉; 
如果页面过长有滚动条,且希望通过链接的 onclick 事件执行操作。应将它的 href 属性设为 javascript:void(0);,而不要是 #,这可以防止不必要的页面跳动; 
如果在链接的 href 属性中调用一个有返回值的函数,当前页面的内容将被此函数的返回值代替; 
在按住Shift键的情况下会有所区别。
今天我遇到的问题,在IE6.0里以href的形式访问不到parentNode。
尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。
就这些,花了不少时间在这上面。

[缘由]
用CheckBoxList控件时想实现在每个checkbox后再加链接的功能,点链接实现一些功能之外,还要把checkbox选中。

 代码如下 复制代码

<input type="checkbox" name="chk" id="chk">
<label for="chk">选中它<a οnclick="this.parentNode.click();" href="http://luwenxiang1990.blog.163.com/blog/#" style="border:solid 1px blue;">[label中的链接]</a></label>

最后用parentNode来实现的。

Html A标签中 href 和 onclick用法、区别、优先级别相关推荐

  1. a标签的href和onclick的区别

    链接的 onclick 事件被先执行,其次是 href 属性下的动作(页面跳转,或 javascript 伪链接): 假设链接中同时存在 href 与 onclick,如果想让 href 属性下的动作 ...

  2. <a>标签中href的几种用法

    众所周知,a标签的最重要功能是实现超链接和锚点.而且,大多数人认为a标签最重要的作用是实现超链接,今天我刚好碰到a标签的一种写法<a href="javascript:;"& ...

  3. a标签中href=的几种用法

    众所周知,a标签的最重要功能是实现超链接和锚点.而且,大多数人认为a标签最重要的作用是实现超链接,今天我刚好碰到a标签的一种写法<a href="javascript:;"& ...

  4. a标签中href的几种用法

    a标签的一种写法,所以就来整理下a标签中href的几种用法. 一.JS伪协议的几种调用方法(参考总结的) 1. a href="javascript:js_method();" 这 ...

  5. a标签中href=的几种跳转方法

    众所周知,a标签的最重要功能是实现超链接和锚点.而且,大多数人认为a标签最重要的作用是实现超链接,今天我刚好碰到a标签的一种写法,所以就来整理下a标签中href的几种用法. 一.Js的几种调用方法(参 ...

  6. mysql id in set_mysql数据库中find_in_set()和in()用法区别

    mysql数据库中find_in_set()和in()用法区别 (2015-07-19 08:30:21) 标签: mysql数据库 find_in_set 在mysql中in可以包括指定的数字,而f ...

  7. SQL中modify和alter用法区别

    SQL中modify和alter用法区别 1. 所属能力大小不同: modify:只能用于修改字段的属性 例如:把age字段变为非空(针对persons表中的age这一个字段进行修改) ALTER T ...

  8. js中click()与onclick()的区别

    由一个简单示例到 js中click()与onclick()的区别 之前朋友在学习js的时候遇到一个有意思的问题. 先贴一份代码说一下代码构成 这里是html结构 <ul><li> ...

  9. java中next()和nextline()用法区别(详细说明)

    java中next和nextline用法区别 一,方法说明 二,空格的情况(tab键相当于多个空个 1.测试代码 2.中间出现空格时 3.开头出现空格时 三,回车键的情况 分析:回车键的情况 四,常见 ...

最新文章

  1. 如何用虚幻引擎4和C++开发游戏?斯坦福相关课程上线
  2. 我的世界minecraft-Python3.9编程(4)-近实时刷新玩家位置
  3. 三菱a系列motion软体_合肥三菱FR-A840-07700-2
  4. vs里面mfc是什么_最近!一大批人正在前往文安,究竟发生了什么?
  5. 比特币源码学习笔记(一)
  6. ubuntu无法打开外接硬盘
  7. 《南溪的目标检测学习笔记》——训练PyTorch模型遇到显存不足的情况怎么办(“OOM: CUDA out of memory“)
  8. asp.net 下载文件
  9. iOS开发小技巧 -- tableView-section圆角边框解决方案
  10. 弹性地基梁板的计算理论_第八章 弹性地基梁的计算理论
  11. 计算机表格名次教程,Word表格怎么算名次
  12. Consul 集群部署
  13. python中爬取网页数据时中文乱码的解决方法
  14. 阿里巴巴推进中国中产阶级奢侈消费
  15. NTP网络校时(北斗卫星授时设备)技术核心源码让网络时间同步不再难
  16. QQ群怎么快速封群,如何举报骗子QQ群可以使之封群?
  17. checkpoints are occurring too frequently
  18. win10中conda activate激活环境出错的解决办法
  19. 教你简单学会用Python画长草颜团子
  20. BBEdit—HTML文本编辑器

热门文章

  1. 解决instant-gnuradio安装了uhd,但是安装soapy显示没有找到uhd模块
  2. WaaS助推企业数字化转型
  3. 不同编码各语言所占字节数及符号所占字节数
  4. 男人网上搞什么副业?线下兼职或者线上兼职都可以
  5. 闲暇时间筛选一些网易云歌曲(Python)
  6. OpenFOAM学习网站汇总(更新中)
  7. python爬取英雄联盟所有皮肤价格表_实用Python是如何爬取英雄联盟(lol)所有皮肤,涨知识了...
  8. 绝地淘沙显示进不去服务器,绝地国服遥遥无期 这款国产游戏却已经抢先登陆了!...
  9. acer台式电脑怎么重装系统_acer台式电脑怎么重装系统
  10. powershell_功能扩展模块PSReadline(psReadlinekeyhandler)相关功能函数以及快捷键绑定情况(by official document)