首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >firstElementChild不适用于Internet 7...what是我的选择吗?

firstElementChild不适用于Internet 7...what是我的选择吗?
EN

Stack Overflow用户
提问于 2011-06-13 16:24:37
回答 5查看 8.6K关注 0票数 9

考虑下面的JavaScript:

代码语言:javascript
运行
复制
var v;
if (this.children.length > 0) {
    v = this.firstElementChild.value;
}

这在FireFox和Chrome的现代版本中有效,但是this.firstElementChild.value在Internet 7-8中抛出了一个异常。对于我来说,还有别的方法可以让它在所有浏览器上运行吗?

更新--最终解决方案

我做了以下几点:

v = (this.firstElementChild || this.children[0] || {}).value --感谢所有的人。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-06-13 16:30:00

我不知道,也许是this.children[0].value

票数 7
EN

Stack Overflow用户

发布于 2011-06-13 16:39:35

this.firstElementChild应该在每个重要的浏览器栏IE、<=9和Firefox3 (QuirksMode)中工作。

this.children[0]将在每个重要的浏览器栏火狐3中工作,除了IE <=9将注释节点作为元素节点(QuirksMode)。这对你来说可能是问题,也可能不是。

这个系统是这样的:

代码语言:javascript
运行
复制
var node = this.firstChild,
    firstElementChild = null;

for ( ; node; node = node.nextSibling) {
    if (node.nodeType === 1) {
        firstElementChild = node;
        break;
    }
}

如果存在第一个元素,firstElementChild将是第一个子元素,否则为null。出于性能原因,最好在执行循环之前查看this.firstElementChild是否存在。

票数 8
EN

Stack Overflow用户

发布于 2011-06-13 16:33:53

如果您的代码位于事件处理程序中,并且函数被绑定为"attachEvent“,则"this”关键字绑定到"window“对象,而不是HTMLElement。尝试:

代码语言:javascript
运行
复制
function doSomething(e) {
    var targ;
    if (!e) var e = window.event;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
}

检查properties.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6333249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档