Javascript object.textContent ==仅在IE 9中未定义

时间:2012-05-29 18:11:35

标签: javascript xml internet-explorer

我在使用以下代码时遇到了IE9的问题:

var XMLDocument = data;
                    var erreurs = new Array();

                    var test = data.lastChild.lastChild.childNodes;

                    for(var i=0; i<test.length; i++)
                    {
                        //var testx = test[i].textContent;
                        //alert("Test"+i+" = "+testx);
                        var testx = getText(test[i]);
                        alert(testx);
                        erreurs[i] = testx;
                    }

function getText(el) {
  return el.textContent || el.innerText || el.nodeValue || '';
}

在FF,Opera和Safari中,此代码运行正常。 在IE中,它给了我:
Test0 =未定义
Test1 =未定义

我的XML:

<error>
    <missing>1</missing>
    <missing>2</missing>
    <missing>a</missing>
</error>

我只想返回“缺失”节点的值。

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

我在这个网站上找到了解决方案: http://www.chezneg.fr/leblog/chezneg-leblog.php?id_art=125

貌似,IE和FF解释器不会以相同的方式读取XML文档 对于FF,错误标记位于:data.lastChild.lastChild.childNodes
对于IE,错误标记位于:data.lastChild.lastChild.lastChild.lastChild.childNodes
(dixit the debugger)

因此,最好通过以下代码找到错误标记:data.getElementsByTagName('error');

非常感谢Esailija的帮助!

答案 1 :(得分:3)

我通过以下代码解决了IE9中的问题:

function getText(el) {
    return el.textContent || el.text;
}