javascript:void(0)和javascript:;的用法
一、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)是可選的,但是寫上去是一個(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?上沒有任何效果。
<a href="javascript:void(0)">單擊此處什么也不會(huì)發(fā)生</a>也就是說,要執(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é)議,它可以讓我們通過一個(gè)鏈接來調(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í)就沒有任何反應(yīng)。 javascript:;表示這是一個(gè)空連接。點(diǎn)擊之后沒任何反應(yīng)。
類似的是#,但是一個(gè)#點(diǎn)擊之后頁(yè)面很長(zhǎng)的情況下會(huì)會(huì)滾到頂部;而javascript:;沒這樣的問題;
當(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ì)使用?#?來定位頁(yè)面的具體位置,格式為:# + id。
如果你要定義一個(gè)死鏈接請(qǐng)使用 javascript:void(0) 。
在做頁(yè)面時(shí),如果想做一個(gè)鏈接點(diǎn)擊后不做任何事情,或者響應(yīng)點(diǎn)擊而完成其他事情,可以設(shè)置其屬性 href = "#",但是,這樣會(huì)有一個(gè)問題,就是當(dāng)頁(yè)面有滾動(dòng)條時(shí),點(diǎn)擊后會(huì)返回到頁(yè)面頂端,用戶體驗(yàn)不好。?
目前有如下幾種解決辦法:?
1)點(diǎn)擊鏈接后不做任何事情?
2)點(diǎn)擊鏈接后,響應(yīng)用戶自定義的點(diǎn)擊事件?
說明:?
1.javascript:void(0)這種偽協(xié)議,少寫的好,如果你看過一些web標(biāo)準(zhǔn)的書就知道為什么了。(不懂,原話摘的,暫做記錄)?
2.鏈接(href)直接使用javascript:void(0)在IE中可能會(huì)引起一些問題,比如:造成gif動(dòng)畫停止播放等,所以,最安全的辦法還是使用“####”。為防止點(diǎn)擊鏈接后跳轉(zhuǎn)到頁(yè)首,onclick事件return false即可。?
3.如果僅僅是想鼠標(biāo)移過,變成手形,可以使用?
?
void是javascript的操作符,意思是:只執(zhí)行表達(dá)式,但沒有返回值,?
void 操作符用法格式如下:?
為了程序風(fēng)格良好,建議使用第二種帶上括號(hào)的?
我們可以使用void操作符指定超級(jí)鏈接,如javascript:void(document.form.submit())。表達(dá)式會(huì)被計(jì)算但是不會(huì)在當(dāng)前文檔處裝入任何內(nèi)容,void(0)計(jì)算為0,但在JavaScript上沒有任何效果,也就是說 <a href="javascript:void(0)">的效果同<a href="javascript:void(1)">的效果是一樣的。?
關(guān)鍵是只要知道void是javascipt自身的操作符,它表示的是只執(zhí)行表達(dá)式,但沒有返回值!?
另外頁(yè)面會(huì)自動(dòng)調(diào)回頂端,是因?yàn)?#34;#"默認(rèn)的瞄點(diǎn)位置是top,所以會(huì)出現(xiàn)這種情況。
轉(zhuǎn)載于:https://www.cnblogs.com/Qian123/p/5345697.html
總結(jié)
以上是生活随笔為你收集整理的javascript:void(0)和javascript:;的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Core Spring】二、装配bea
- 下一篇: JS标签的各种事件的举例