非侵入式JavaScript
最好的做法是將事件處理方法添加到鏈接。
confirm()函數產生你描述的對話框,並根據用戶的選擇返回true或false。
鏈接上的事件處理程序方法有一個特殊的行爲,即如果它們返回false,它們會終止鏈接操作。
var link = document.getElementById('confirmToFollow');
link.onclick = function() {
return confirm("Are you sure?");
};
如果您希望鏈接需要Javascript,在HTML必須進行編輯。刪除的href:
<a href="#" id="confirmToFollow"...
您可以明確地設置在事件處理程序的鏈接目標:
var link = document.getElementById('confirmToFollow');
link.onclick = function() {
if(confirm("Are you sure?")) {
window.location = "http://www.stackoverflow.com/";
}
return false;
};
如果你想叫多個鏈路上的同樣的方法,你可以獲取鏈接的節點列表你希望,並通過節點列表的方法應用到每一個你的循環:
var allLinks = document.getElementsByTagName('a');
for (var i=0; i < allLinks.length; i++) {
allLinks[i].onclick = function() {
return confirm("Are you sure?");
};
}
有同樣的想法的進一步排列在這裏,如使用類名來決定哪些鏈接將監聽該方法,並根據其他一些標準將唯一位置傳遞給每個位置。他們是六個中的一個,另一個是六個。
選擇性方法(不鼓勵實踐):
一個氣餒實踐是經由附加一個方法onclick屬性:
<a href="mypage.html" onclick="...
另一個氣餒實踐是設置函數調用href屬性:
<a href="javascript: confirmLink() ...
請注意,這些勸阻做法都是可行的解決方案。
這個沒什麼問題。如果您不需要,請不要陷入JavaScript完整功能集的複雜性中。 – dacracot 2008-11-05 22:19:55