我可能误解了这个函数的正确用法,但我相信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