Home > Article > Web Front-end > Detailed explanation of the usage differences between a tag href and onclick in HTML and examples of priority levels
I used to write the href and onclick of 72d4ced2cc960a6bc2541984146fdaaa very casually. Later, several problems occurred, and then I started to pay attention to this issue:
First excerpt from a document:
In Javascript, void is an operator, which specifies to calculate an expression but not return a value.
void operator usage format is as follows:
1. javascript:void (expression) 2. javascript:void expression
expression is a Javascript standard expression to be evaluated. The parentheses outside the expression are optional, but are a good practice to write. (Implementation version Navigator 3.0)
You can use the void operator to specify a hyperlink. The expression will be evaluated but nothing will be loaded into the current document.
The following code creates a hyperlink that will cause nothing to happen to the user later. When the user links, void(0) evaluates to 0, but has no effect on the Javascript.
<A HREF="javascript:void(0)">单此处什么也不会发生</A>
The following code creates a hyperlink that will submit the form when the user clicks.
<A HREF="javascript:void(document.form.submit())">
Submit form here63505a6f727f70c8bd4066f3066dcb9d
The following code executes the subgo() function,
<a href="javascript:void(0)" onclick="subgo()">点我</a>
Here, javascript:void(0) has no actual function. It is just a dead link, and the executed function is subgo().
点我与<a href="javascript:void(0)" onclick="subgo()">点我</a>区别。
In fact #contains a location information. The default anchor is #top, which is the top of the web page, and javascript:void(0) only represents a dead link without any information. Therefore, it is best to use void(0)
when calling a script href generally points to a URL address, you can also call javascript, such as href="javascript:xxx();", document It is recommended to write like this: 97645ab94f319ea0ad8ad3c2666043a5xx5db79b134e9f6b82c0b36e0489ee08ed, but this method sometimes causes strange problems in complex environments, so try not to Using javascript: protocol as the href attribute of A will not only cause the window.onbeforeunload event to be triggered unnecessarily, but will also cause the animated gif image to stop playing in IE.
We know that the onclick event of the link is executed first, followed by the action under the href attribute (page jump, or javascript pseudo-link). If you do not want to execute the action under the href attribute Action execution, onclick needs to return false, generally write onclick="xxx();return false;".
JS source code of TabPane, because onclick does not return FALSE , when TABPANE is closed in IFRMAE, it will cause href execution and page display problems. The solution is to copy the following code into the JSP using TAB.
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><p class=""+TAB_STYLE_LEFT+""></p></td>"; strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">"; strHTML +="<p style="white-space:nowrap;page-break-before: always;page-break-after: always;">"; strHTML += tabpage.getTitle(); strHTML +="</p></td>"; if(tabpage.showCloseButton){ strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">"; strHTML +="<a class="close" href="#" onclick="$o(\"" + this.id + "\").getTab(\"" + tabpage.id + "\").close(); return false; ">"; if(isIE){ strHTML +="<p></p></a>"; }else{ strHTML +="<p class="close"></p></a>"; } strHTML +="</td>"; } if(tabpage.allowReload){ strHTML +="<td nowarp class=""+TAB_STYLE_MID+"">"; strHTML +="<a class="reload" href="#" onclick="$o(\"" + this.id + "\").getTab(\"" + tabpage.id + "\").reload(); return false; ">"; if(isIE){ strHTML +="<p></p></a>"; }else{ strHTML +="<p class="reload"></p></a>"; } strHTML +="</td>"; } strHTML +="<td><p class=""+TAB_STYLE_RIGHT+""></p></p>"; 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; }
a439bf1a004d41787960405e04afa1b2 This is written so that the link does not link to a new page and instead executes a piece of js code. It can have the same effect as onclick. Generally speaking, if you want to call a script, you should still write the code in the onclick event. It is not recommended to href=' javascript:function()' This way of writing, because after the js code is set in the href attribute, other unnecessary events may be triggered in some browsers. causing unintended effects.and The onclick event will be executed before the href attribute, so it will be triggered first. onclick then triggers href, so if you don’t want the page to jump, you can set The js code in onclick returns false at the end, so that the things inside href will not be executed. In the ajax application, write more like the following , to indicate that this link will not jump, but will execute a js script.72e4edd2d085fdcb47b53f5e502e5ff75db79b134e9f6b82c0b36e0489ee08ed或者 545e03930b8a5bfef9f2a7d842d13b325db79b134e9f6b82c0b36e0489ee08edvoid(0) 只是用来计算一个空值,其实也是什么事情都不做,而分号“;”则表示是一个空的js语句,这样就不会有任何其他跳转发生了,而且W3C标准不推荐在href里面执行javascript语句,所以还是用 onclick事件触发吧
如果不设置 href属性在IE6下面会不响应hover。双击后会选中标签的父容器而非这个一a标签(IE下都存在这一问题)。
<a href="javascirpt:fn(this)"> <a onclick="fn(this)">
所以,比较推荐的写法是假定我们有个fn方法,需要取到这个元素,第一个方法传入的this是空值。
<a href="javascript:void(0)" onclick="fn(this)">
下面代码则执行了subgo()函数,
<a href="javascript:void(0)" onclick="subgo()">点我</a>
在这里,javascript:void(0),没启实质上的作用,它仅仅是一个死链接,执行的函数是subgo()。
点我与<a href="javascript:void(0)" onclick="subgo()">点我</a>区别。
实际上 #包含了一个位置信息默认的锚是#top 也就是网页的上端 ,而javascript:void(0) 仅仅表示一个死链接,没有任何信息。所以调用脚本的时候最好用void(0)
href一般是指向一个URL地址,也可以调用javascript ,如href="javascript:xxx();",文档中推荐这样写:a8fcd39b1b46247ccd0f10983ba5bd30 会导致页面定位到书签位置,