爲了配合都非常-正確答案一起,發生了什麼事是你內聯,你已經寫了onclick="return runFunction();"
如果你看看那個,什麼它真正做的是要這樣的功能:
var link = document.getElementById("myLink");
link.onclick = function() { runFunction(); };
看到問題了嗎?我的runFunction
被調用時沒有傳入任何事件對象。 ......這意味着var thisLink = (evt) ?
將返回false,這意味着它將嘗試在oldIE模式下運行。
通過寫onclick="runFunction"
,這等於說:
link.onclick = runFunction;
這意味着當onclick事件發生,runFunction將被調用,並在符合W3C的瀏覽器,它會發送一個事件對象。
這就是解決方案的原因。
避免大量混淆的最佳方法是處理來自JavaScript內部的JavaScript以及處理HTML內部的HTML,以便您不必擔心字符串如何轉換爲代碼。
現在,讓這一切工作,防止重定向,要做到這一點:
爲W3C的瀏覽器(即傳遞事件參數的那些):
function runFunction (evt) {
// stops the default-action from happening
// means you need to find another way to fire it, if you want to later
evt.preventDefault();
// stops higher-up elements from hearing about the event
// like if you stop a submit button from "clicking", that doesn't stop the form
// from submitting
evt.stopPropagation();
//the oldIE versions of both of these are
event.cancelBubble = true;
event.returnValue = false;
}
這意味着沒有事件被傳遞給函數。感謝名單。 – Vicky 2012-07-19 19:34:42