我的一个js程序, 读取本地xml文件的;//读取xml文件
xmlDoc = readXML("test.xml"); //语句1
//取其中一个结点的属性
xmlDoc.getElementsByTagName('number')[0].getAttribute("value")//语句2现在的问题是:
1.在ie中可完好运行
2.在ff中,用firebug单步调试 或是 在 语句1 和 语句2 中间加上alert("xxxx"), “拖延”一段时间  也可正常运行
3.在ff中, 直接运行, 报错 xmlDoc.getElementsByTagName("number")[0] is undefined类似的问题碰到过几次,请教在ff中应该如何解决

解决方案 »

  1.   

    未载入完吧
    readXML是怎样的
      

  2.   


    就是不明白ff什么时候算是加载完成~, 用setTimeout也不顶用, 一定要alert();    var xmlDoc;
        if(window.ActiveXObject)
        {
            xmlDoc    = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.async    = false;
            xmlDoc.load(xmlFile);
        }
        else if (document.implementation&&document.implementation.createDocument)
        {
            xmlDoc    = document.implementation.createDocument('', '', null);
            xmlDoc.load(xmlFile);
        }
        else
        {
            return null;
        }
        
        return xmlDoc;
      

  3.   

    这样试试
    var xmlDoc;
        if(window.ActiveXObject)
        {
            xmlDoc    = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.async    = false;
            xmlDoc.load(xmlFile);
        }
        else if (document.implementation&&document.implementation.createDocument)
        {
            xmlDoc    = document.implementation.createDocument('', '', null);
            xmlDoc.async    = false;
            xmlDoc.load(xmlFile);
        }
        else
        {
            return null;
        }
       
        return xmlDoc;
      

  4.   

    xmlDoc = readXML("test.xml"); //语句1 
    //取其中一个结点的属性 
    xmlDoc.getElementsByTagName('number')(0).getAttribute("value")//语句2 
    這樣試一下
      

  5.   

    在FF中先判断xmlDoc是否存在,直到存在才继续进行
      

  6.   

    <script language="javascript">
    function loadXML(xmlFile)
    {
    var xmlDoc;
    if(window.ActiveXObject)
    {
    xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = false;
    xmlDoc.load(xmlFile);
    }
    else if(document.implementation&&document.implementation.createDocument)
    {
    xmlDoc = document.implementation.createDocument('','',null);
    xmlDoc.async = false;
    xmlDoc.load(xmlFile);
    }
    else return null;
    return xmlDoc;
    }
    xmlDoc = loadXML("test.xml");
    books = xmlDoc.getElementsByTagName('books');book = xmlDoc.getElementsByTagName('book');
    for(var i=0;i<book.length;i++)
    {
    t = book[i].getElementsByTagName('title')[0].firstChild.nodeValue;
    alert(t);
    }</script>------
    test.xml<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <book>
    <title>MySQL Bible</title>
    <author>Steve Suehring</author>
    <isbn>9780764549328</isbn>
    <publisher>Wiley Publishing Inc.</publisher>
    </book>
    <book>
    <title>JavaScript Step by Step</title>
    <author>Steve Suehring</author>
    <isbn>9780735624498</isbn>
    <publisher>Microsoft Press</publisher>
    </book>
    </books>
      

  7.   

    要判断一下节点的类型firefox空行也会认为是一个节点