在Html中,<a/>標籤表示超鏈接,它的href屬性表示要跳轉的地址。但是有時候我們想在單擊某個連接的時候執行一個JavaScript函數或者一段JavaScript代碼,這時就可以使用void搭配Js函數來實現。
1.href與void
在<a/>的href屬性中使用"javascript:"加上想要執行的代碼來達到點擊執行Js代碼的目的。但是當這些Js代碼的最終返回值或對象不是undefined的話(函數的默認返回值是undefined),網頁的內容會被替換成表示該返回值或對象的字符串(使用toString()轉換)。(Chrome中不存在該現象。)因此要使用void來忽略函數返回的值或對象。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>voidTest.html</title>
<script type="text/javascript">
//測試函數,當單擊鏈接的時候彈出信息
function voidTest()
{
alert("Test!");
return "From voidTest()"; //返回字符串
}
</script>
</head>
<body>
<!-- 期待的效果是單擊鏈接彈出信息,不改變頁面結構和內容 -->
<br>
<!-- 不使用void,點擊後整個頁面只有From voidTest()(Chrome不影響) -->
<a href="javascript:voidTest()">Without void!</a>
<br> <br>
<!-- 使用void,點擊後頁面內容不改變 -->
<a href="javascript:void voidTest()">With void!</a>
<br> <br>
<!-- 也可以加括號 -->
<a href="javascript:void(voidTest())">With void()!</a>
</body>
</html>
2.href、onclick與void
當我們希望單擊鏈接的時候執行一些Js函數,並且希望由鏈接的click事件觸發,這個時候也要使用void來阻止超鏈接的跳轉。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>voidTest.html</title>
<script type="text/javascript">
//測試函數,當單擊鏈接的時候彈出信息
function voidTest()
{
alert("Test!");
}
</script>
</head>
<body>
<!-- 期待的效果是單擊鏈接彈出信息 -->
<!-- 不加href,<a/>顯示成普通文字而不是超鏈接,onclick事件無法觸發 -->
<a οnclick="voidTest">Without href!</a>
<br><br>
<!-- 添加空的href屬性,點擊時會重載該頁面 -->
<a href="" οnclick="voidTest">With empty href!</a>
<br><br>
<!-- href屬性爲void,正常 -->
<a href="javascript:void" οnclick="voidTest()">With javascript:void in href!</a>
<br><br>
<!-- href屬性爲void(0),正常 -->
<a href="javascript:void(0)" οnclick="voidTest()">With javascript:void(0) in href!</a>
</body>
</html>