原文連接:https://www.cnblogs.com/Qian123/p/5345697.html
一更振、JavaScript:void(0)
我們經(jīng)常會(huì)使用到javascript:void(0)
這樣的代碼,那么在 JavaScript 中 javascript:void(0)
代表的是什么意思呢豹储?
javascript:void(0)
中最關(guān)鍵的是 void
關(guān)鍵字, void
是 JavaScript 中非常重要的關(guān)鍵字,該操作符指定要計(jì)算一個(gè)表達(dá)式但是不返回值蜕劝。
JavaScript中void是一個(gè)操作符,該操作符指定要計(jì)算一個(gè)表達(dá)式但是不返回值。
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
expression
是一個(gè)要計(jì)算的 JavaScript 標(biāo)準(zhǔn)的表達(dá)式岖沛。表達(dá)式外側(cè)的圓括號(hào)是可選的暑始,但是寫(xiě)上去是一個(gè)好習(xí)慣。
我們可以使用void
操作符指定超級(jí)鏈接婴削。表達(dá)式會(huì)被計(jì)算但是不會(huì)在當(dāng)前文檔處裝入任何內(nèi)容廊镜。
下面的代碼創(chuàng)建了一個(gè)超級(jí)鏈接,當(dāng)用戶點(diǎn)擊以后不會(huì)發(fā)生任何事唉俗。當(dāng)用戶點(diǎn)擊鏈接時(shí)嗤朴,void(0)
計(jì)算為 0,但在 JavaScript 上沒(méi)有任何效果虫溜。
<a href="javascript:void(0)">單擊此處什么也不會(huì)發(fā)生</a>
也就是說(shuō)雹姊,要執(zhí)行某些處理,但是不整體刷新頁(yè)面的情況下衡楞,可以使用void(0)
,但是在需要對(duì)頁(yè)面進(jìn)行refresh的情況下吱雏,那就要仔細(xì)了。
下面的代碼創(chuàng)建了一個(gè)超級(jí)鏈接寺酪,用戶單擊時(shí)會(huì)提交表單坎背。
<a href="javascript:void(document.form.submit())">單此處提交表單</a>
其實(shí)我們可以這樣用<a href="javascript:void(document.form.submit())">
,這句話會(huì)進(jìn)行一次submit操作寄雀。那什么情況下用void(0)
比較多呢得滤,無(wú)刷新,當(dāng)然是Ajax了盒犹,看一下Ajax的web頁(yè)面的話懂更,一般都會(huì)看到有很多的void(0)
,所以在使用void(0)
之前,最好先想一想,這個(gè)頁(yè)面是否需要整體刷新急膀。
二沮协、<a>標(biāo)簽中href="javascript:;"
<a>
標(biāo)簽的 href
屬性用于指定超鏈接目標(biāo)的 URL,href 屬性的值可以是任何有效文檔的相對(duì)或絕對(duì) URL卓嫂,包括片段標(biāo)識(shí)符和 JavaScript 代碼段慷暂。
這里的href="javascript:;"
,其中``javascript:是偽協(xié)議晨雳,它可以讓我們通過(guò)一個(gè)鏈接來(lái)調(diào)用
javascript函數(shù).而采用這個(gè)方式
javascript:;```可以實(shí)現(xiàn)A標(biāo)簽的點(diǎn)擊事件運(yùn)行時(shí)行瑞,如果頁(yè)面內(nèi)容很多,有滾動(dòng)條時(shí)餐禁,頁(yè)面不會(huì)亂跳血久,用戶體驗(yàn)更好。
javascript:
是表示在觸發(fā)<a>
默認(rèn)動(dòng)作時(shí)帮非,執(zhí)行一段JavaScript
代碼氧吐,而 javascript:;
表示什么都不執(zhí)行讹蘑,這樣點(diǎn)擊<a>
時(shí)就沒(méi)有任何反應(yīng)。
javascript:;
表示這是一個(gè)空連接筑舅。點(diǎn)擊之后沒(méi)任何反應(yīng)座慰。
類似的是#
,但是一個(gè)#
點(diǎn)擊之后頁(yè)面很長(zhǎng)的情況下會(huì)會(huì)滾到頂部豁翎;而javascript:;
沒(méi)這樣的問(wèn)題角骤;
當(dāng)然###這樣的效果就跟javascript:;
一樣了
三、href="#"與href="javascript:void(0)"的區(qū)別
*#
包含了一個(gè)位置信息心剥,默認(rèn)的錨是#top
也就是網(wǎng)頁(yè)的上端邦尊。
而javascript:void(0)
, 僅僅表示一個(gè)死鏈接。
在頁(yè)面很長(zhǎng)的時(shí)候會(huì)使用 #
來(lái)定位頁(yè)面的具體位置优烧,格式為:# + id
蝉揍。
如果你要定義一個(gè)死鏈接請(qǐng)使用 javascript:void(0)
。
在做頁(yè)面時(shí)畦娄,如果想做一個(gè)鏈接點(diǎn)擊后不做任何事情又沾,或者響應(yīng)點(diǎn)擊而完成其他事情,可以設(shè)置其屬性href = "#"
熙卡,但是杖刷,這樣會(huì)有一個(gè)問(wèn)題,就是當(dāng)頁(yè)面有滾動(dòng)條時(shí)驳癌,點(diǎn)擊后會(huì)返回到頁(yè)面頂端滑燃,用戶體驗(yàn)不好。
目前有如下幾種解決辦法:
1)點(diǎn)擊鏈接后不做任何事情
1. 1.<a href="javascript:void(0);" >test</a>
2. 2.<a href="javascript:;" >test</a>
3. 3.<a href="####" >test</a> //使用2個(gè)到4個(gè)#颓鲜,見(jiàn)的大多是"####"表窘,也有使用"#all"等其他的
2)點(diǎn)擊鏈接后,響應(yīng)用戶自定義的點(diǎn)擊事件
1. 1.<a href="javascript:void(0)" onclick="doSomething()">test</a>
2. 2.<a href="#" onclick="doSomething();return false;">什么問(wèn)題都解決了,包括瀏覽器不兼容問(wèn)題</a> //或者直接使用href=""
3. 3.<a href="#" onclick="alert();event.returnValue=false;">test</a>
說(shuō)明:
1.javascript:void(0)
這種偽協(xié)議甜滨,少寫(xiě)的好乐严,如果你看過(guò)一些web標(biāo)準(zhǔn)的書(shū)就知道為什么了。(不懂衣摩,原話摘的昂验,暫做記錄)
2.鏈接(href)直接使用javascript:void(0)
在IE中可能會(huì)引起一些問(wèn)題,比如:造成gif動(dòng)畫(huà)停止播放等艾扮,所以既琴,最安全的辦法還是使用“####”。為防止點(diǎn)擊鏈接后跳轉(zhuǎn)到頁(yè)首栏渺,onclick事件return false即可呛梆。
3.如果僅僅是想鼠標(biāo)移過(guò)锐涯,變成手形磕诊,可以使用
1. <span style="cursor:pointer" onclick="foo()">Click Me!</span>
void
是javascript
的操作符,意思是:只執(zhí)行表達(dá)式,但沒(méi)有返回值霎终,
void
操作符用法格式如下:
1. 1. javascript:void (expression)
2. 2. javascript:void expression
為了程序風(fēng)格良好滞磺,建議使用第二種帶上括號(hào)的
我們可以使用void
操作符指定超級(jí)鏈接,如javascript:void(document.form.submit())
莱褒。表達(dá)式會(huì)被計(jì)算但是不會(huì)在當(dāng)前文檔處裝入任何內(nèi)容击困,void(0)
計(jì)算為0,但在JavaScript
上沒(méi)有任何效果广凸,也就是說(shuō) <a href="javascript:void(0)">
的效果同<a href="javascript:void(1)">
的效果是一樣的阅茶。
關(guān)鍵是只要知道void是javascipt自身的操作符,它表示的是只執(zhí)行表達(dá)式谅海,但沒(méi)有返回值脸哀!
另外頁(yè)面會(huì)自動(dòng)調(diào)回頂端,是因?yàn)?code>"#"默認(rèn)的瞄點(diǎn)位置是top
扭吁,所以會(huì)出現(xiàn)這種情況撞蜂。
-------------我是低調(diào)的分割線--------------------------
如果對(duì)你有幫助,可以點(diǎn)擊“推薦”哦`(∩_∩)′