a標籤的herf和click事件

在動態網頁中,經常須要在單擊超連接時處理一些數據,而不是跳轉一個網頁。在這種狀況下,一般有如下三種處理方式:javascript

不設置<a>標籤的href屬性,只設置onclick屬性。在這種處理方式下,一般超連接文本會和正文的文本以相同的形式出現,即不 會有默認的下劃線。當鼠標放在超連接上也不會顯示小手的形狀(除非爲該超連接設置了CSS)。所以,用戶很難知道這是一個能夠點擊的超連接。html

將<a>標籤的href屬性值設置爲"#",並設置onclick屬性。在這種處理方式下,用戶能夠很明顯地看出哪些文字是超連接。在 單擊該超連接時,也能夠執行onclick屬性值中的JavaScript語句,而且不會跳轉網頁。可是,因爲href的屬性值爲"#",瀏覽器會自動跳 轉到當前網頁的頂部。若是當前網頁內容比較多,瀏覽器窗口出現下拉滾動條時,能夠很明顯地看到跳轉,而這種跳轉每每不是網頁設計者的          本意。java

在沒有爲<a>標籤設置onclick屬性時,若是單擊了該超連接,瀏覽器會加載href屬性中的URL。若是href屬性值並非一 個URL,而是一個JavaScript語句的話,那麼瀏覽器就會執行該語句。所以,能夠直接將JavaScript語句寫在<a>標籤的 href屬性值中,讓href屬性代替onclick屬性。在這種處理方式下,既能夠響應click事件,又能夠不讓網頁跳轉。web

在<a>標籤的href屬性值中添加JavaScript語句以前,必需要先使用"javascript:"語句來聲明href屬性值中的語句爲JavaScript語句。不然,瀏覽器會將href屬性值中的JavaScript語句當成是URL進行加載瀏覽器

<html>
<head>
<title>在超連接中使用事件</title>
<metahttp-equiv="content-type"content="text/html;charset=gb2312">
<scripttype="text/javascript"language="javascript">
<!--
//多添加幾個換行,讓效果明顯
for(var i=0;i<100;i++)
{
document.write("<br>");
}
-->
</script>
</head>
<body>
<aonclick="alert('您單擊了第二個超連接')">第1個超連接</a><br>
<ahref="http://blog.163.com/alaskan_hu/blog/#"onclick="alert('您單擊了第二個超連接')">第2個超連接</a>
<br>
<ahref="javascript:alert('您單擊了第三個超連接')">第3個超連接</a>
<br>
</body>
</html>

 

在本例中建立了3個超連接,這3個超連接的處理方式以下所示:ui

第1個超連接中,沒有設置href屬性,所以,從圖12-11中看起來好像只是一行文字,而且鼠標放在上面的時候,也不會顯示小手的形狀。所以,很 難讓用戶知道這是一個能夠點擊的超連接。可是若是用戶單擊了該超連接,會彈出一個警告框,並且單擊警告框中的【肯定】按鈕以後,不會跳轉到任何URL上。spa

第2個超連接中,href屬性值爲"#",若是單擊該超連接,先會執行onclick屬性值中的JavaScript,彈出一個警告框。在單擊警告框中的【肯定】按鈕以後,瀏覽器會自動跳轉到當前網頁的頂部。設計

第3個超連接中,直接將JavaScript語句寫在href屬性值中。在單擊該超連接時,能夠執行href屬性值中的JavaScript語句,並且不會有任何跳轉。orm

 

因爲onclick先於herf執行,因此能夠利用這個執行順序,實現頁面遷移的控制,即知足必定條件的狀況下才遷移頁面。htm

把上面代碼修改爲以下代碼。onclick中調用的判斷方法必須返回true/false,同時必須用return把該判斷方法的返回值

傳給爲onclick事件,這樣當判斷方法返回false時(即onclick="javascript:return false"), 則herf不執行,頁面就

不進行遷移;若判斷方法返回true,則herf執行,頁面進行遷移。若onclick中的判斷方法前不加return,則沒法控制

herf的執行,不管判斷方法返回true或false,herf都執行遷移頁面。

相關文章
相關標籤/搜索