我可能誤解了這個函數的正確用法,但我相信appendChild在Firefox中工作不正確。我有一個非常大的腳本,自從版本6以來在IE中運行良好。我們現在試圖使此腳本在所有瀏覽器中都能正常工作,所以我開始在FF中進行測試。appendChild沒有正確設置parentElement
下面是腳本的一些相關線路,修改這裏更容易閱讀:
var tempDocFragment = document.createDocumentFragment();
var tempNewtbody = document.createElement("tbody");
trElem = document.createElement("tr");
tdElem = document.createElement("td");
trElem.appendChild(tdElem);
tempDocFragment.appendChild(trElem);
tempNewtbody.appendChild(tempDocFragment);
mytable.appendChild(tempNewtbody);
代碼就像一個循環,增加了1000+介於0和錶行的表內的上方運行。這一切似乎工作正常,錶行出現在表中。但是,錶行有運行這行代碼的onmouseover事件:
alert(this.parentElement);
這將返回在Firefox「未定義」,但返回的IE瀏覽器的正確parentElement。因此,看起來Firefox正在運行代碼來正確地追加子元素,但不知何故將任何父母與這些子元素相關聯。我很感激任何對我可能做錯的見解。
謝謝。
您正在將TR添加到片段中,然後將片段添加到tbody中 - 應該是相反的方式 – Leon
爲什麼要將trs附加到文檔片段?也許這就是Firefox認爲的父母? –
我無法重現此行爲;請參閱http://jsfiddle.net/wxQBK/。你可以創建一個演示它的jsFiddle,併發布鏈接? – ruakh