怎麼樣呢,未定義ParentNode DOM錯誤的onmouseout
[here is a small page illustrating my problem(問題出現在火狐)
所以我有一個功能onmouseout="regress(event, this)"
其測試,如果鼠標實際上了當前元素和任何外這是孩子。 (more details on why I did this and what is the matter)。 如果鼠標確實在外面,我想停止按鈕上的動畫並重置一個計時器(我曾這樣做)。它的工作原理。
只有它沒有。在Firefox(測試v5.0)即是。我得到一個DOM相關的錯誤。觸發該函數的元素的「parentNode
」是「」,然後它的父代將是「未定義」,然後出現錯誤並且代碼爆炸。
這是令人困惑的部分:只有當鼠標真正離開按鈕區域時纔會發生此錯誤。還有另一種情況,當onmouseout事件被觸發時(爲了避免使用這個函數)。這是按鈕的孩子從按鈕的另一個孩子。在這種情況下,parentNode
工作正常,從buttonChild到按鈕到buttonParent到blabla到BODY,然後停止。
我的問題是,爲什麼未定義的錯誤出現在一種情況下,而不在其他。請注意,Chrome或IE9中沒有錯誤。另外我該如何解決它?
這讓我感到困惑。感謝您的任何幫助。
我很困惑。
另外這裏的JavaScript函數:
function regress(evt, x){
//if (!e && window.event)
if (window.event)
var e = window.event;
else
var e = evt; //if we got here, you're using Firefox
var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
while (reltg.tagName != 'body')
{
//alert(reltg.id+" == " + x.id);
if (reltg.id == x.id)
{
return;
}
reltg = reltg.parentNode;
//alert(reltg.tagName);
}
// I'm on true mouseout, do stuff here:
$("#"+x.id+"ThickParent").stop(true, false);
$("#"+x.id+"ThickParent").width(0);
canStartAgain=true;
stopInterval = true;
timerValue = 1.50;
$("#"+x.id+"Timer").html("");
//thanks to: http://www.webmasterworld.com/javascript/3752159.htm
}
取消註釋//alert(reltg.id+" == " + x.id);
清楚地看到,當onmouseout
得到觸發,哪些元素reltg.parentNode
在什麼時候上。
我在FF5的這條線上得到一個錯誤:'while(reltg.tagName!='body')' –