appendChild 未正确设置parentElement

发布于 2024-12-18 14:06:43 字数 810 浏览 0 评论 0 原文

我可能误解了这个函数的正确用法,但我相信appendChild在Firefox中工作不正确。我有一个非常大的脚本,自版本 6 以来在 IE 中运行良好。我们现在正在尝试使该脚本在所有浏览器中运行,因此我开始在 FF 中进行测试。

以下是脚本中的一些相关行,为了便于阅读而进行了修改:

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);

类似上面的代码在一个循环内运行,该循环向表中添加 0 到 1000 多个表行。这一切似乎工作正常,并且表格行出现在表格中。但是,表行有一个运行以下代码行的 onmouseover 事件:

alert(this.parentElement);

这在 Firefox 中返回“未定义”,但在 IE 上返回正确的parentElement。因此,Firefox 似乎正在运行代码以正确附加子元素,但不知何故无法将任何父元素与这些子元素关联起来。如果您能了解我可能做错了什么,我将不胜感激。

谢谢。

I may be misunderstanding the correct usage of this function, but I believe appendChild is working incorrectly in Firefox. I have a very large script that has worked fine in IE since version 6. We're now trying to make this script work in all browsers, so I'm starting to test in FF.

Here's some relevant lines from the script, modified for easier reading here:

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);

Code like the above runs within a loop that adds between 0 and 1000+ table rows to a table. This all appears to work fine and the table rows appear in the table. However, the table rows have an onmouseover event that runs this line of code:

alert(this.parentElement);

This returns 'undefined' in Firefox, but returns the proper parentElement on IE. So it appears that Firefox is running the code to append the child elements correctly, but somehow fails to associate any parent with those child elements. I would appreciate any insight into what I may be doing wrong.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尸血腥色 2024-12-25 14:06:43

标准方法是使用 parentNode,它适用于所有浏览器

the standard way is to use parentNode, it will work on all browsers

软糖 2024-12-25 14:06:43

parentElement Firefox 不支持 9.。它最初是 IE 4 中元素的非标准属性,最近在 DOM4

使用 parentNode 代替。

parentElement is not supported in Firefox < 9. It started life as a non-standard property of elements in IE 4 and has relatively recently been standardized in DOM4.

Use parentNode instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文