gpt4 book ai didi

javascript - 为什么我在 javascript 中得到的是 [Text Object] 而不是预期的带有 previousSibling 的 TR 对象?

转载 作者:行者123 更新时间:2023-11-28 16:31:23 26 4
gpt4 key购买 nike

如果我有这样的 HTML 代码:

<HTML>
<HEAD>
<TITLE>This is a test</TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD>First Cell</TD>
</TR>
<TR>
<TD>Second Cell</TD>
<TD><A href="#" onclick="alert(this.parentNode.parentNode.previousSibling.childNodes[0].innerHTML); return false;">Click Here</A></TD>
</TR>
</TABLE>
</BODY>
</HTML>

这适用于 Internet Explorer,但不适用于 Firefox 以及可能更多的浏览器。显然,Firefox 将 TR(缩进)之间的空格解释为我上面的代码中“this”的父 TR 的 previousSibling。因此,它没有获得所需的 TR 对象,而是给了我一个 [文本对象]。

所以我现在的问题是,为什么 Firefox 不像 Internet Explorer 那样忽略 TR 之间的空格。我知道我可以使用 previousElementSibling 来规避这个问题,但我想知道为什么 Firefox 会这样做,以及是否有合理的解释或用途。我尝试在互联网上查找它但无济于事。因此,如果有人可以告诉我或给我一个可以找到此信息的链接,我将不胜感激!

最佳答案

是的,你是对的。实际上,IE 是主要错误的。 Here is Mozilla's take on it

你可以

a) 使用parentNode.getElementsByTagName
b) 通过循环来展平 dom,直到 nodeType 是您正在寻找的:这是一个比 Mozilla 在上面的链接中提供的脚本更简单的脚本:http://blog.tegneblokken.net/2009/08/counting-childnodes-with-javascript-the-whitespace-incident/
c) 使用 jQuery

关于javascript - 为什么我在 javascript 中得到的是 [Text Object] 而不是预期的带有 previousSibling 的 TR 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com