Javascript 使用onclick事件构建可扩展列表

Javascript 使用onclick事件构建可扩展列表,javascript,xml,Javascript,Xml,我试图显示xml文件中存在的节点。我需要的是,仅当单击父节点时才显示子节点。我尝试使用onclick,但出现了一个错误(我不确定在这种情况下是否可以使用onclick) 我的xml看起来像这样(无法修改) 一些短语 我试过的代码 var nodes=xmlDoc.documentElement.childNodes; 对于(i=0;i

我试图显示xml文件中存在的节点。我需要的是,仅当单击父节点时才显示子节点。我尝试使用onclick,但出现了一个错误(我不确定在这种情况下是否可以使用onclick)

我的xml看起来像这样(无法修改)


一些短语

我试过的代码
var nodes=xmlDoc.documentElement.childNodes;
对于(i=0;i
”+“+”
    “+node.nodeName+”
“+”+“
”; document.getElementsByClassName(“节点”).onclick=function(){ if(node.hasChildNodes()) { var children=node.childNodes; 对于(var j=0;j”+ child.nodeName+“”+ child.textContent+“”+”
”; 对于(var k=0;k< child.attributes.length;k++){ var attrib=child.attributes[k]; if(attrib.specified==true){ 文件。写(“
  • ”+ 属性名称+“=”+ 属性值+”
  • “+”
    ”; } 文件。写(“
    ”); } } } } }; } }
    
    函数loadXMLDoc(dname)
    {
    if(window.XMLHttpRequest)
    {
    xhttp=newXMLHttpRequest();
    }
    其他的
    {
    xhttp=新的ActiveXObject(“Microsoft.XMLDOM”);
    }
    xhttp.open(“GET”、dname、false);
    xhttp.send();
    返回xhttp.responseXML;
    }
    var myxml=loadXMLDoc(“test.xml”);
    //document.write(myxml.getElementsByTagName(“title”)[0]。childNodes[0]。nodeValue+“
    ”; var mybtn=document.getElementById('expand_parent'); 函数myfun1(){ var divarea=document.getElementById('myanchor'); var msg=myxml.getElementsByTagName(“书店”)[0].childNodes[0].nodeValue; divarea.text=msg; } 函数myfun2(){ var divarea=document.getElementById('mydiv'); var输出=”; var x=myxml.getElementsByTagName(“标题”); 对于(i=0;i
    <Types xmlns:xsi="http://www.w3.org..">
        <entities1>
            <abc gender="male" ></abc>
            <xyz sub="" norm=""></xyz>
        </entities1>   
        <entities2>
            <Phrase>Some Phrase</Phrase>
            <SC/> 
        </entities2>
    </Types>
    
    code I tried
    
     var nodes = xmlDoc.documentElement.childNodes;
    
            for (i = 0; i < nodes.length; i++)
            {
                var node = nodes[i];
                if (node.nodeName === '#text')
                {
                    document.write("");
                }
                else
                {
    
               document.write("<br><br>" + "<b>" + "<ul>" + node.nodeName + "
               </ul>" + "</b>" + "<br>");             
               document.getElementsByClassName("node").onclick= function () {
                            if (node.hasChildNodes())
                            {
                                var children = node.childNodes;
                                for (var j = 0; j < children.length; j++)
                                {
                                    var child = children[j];
                                    if (child.nodeName === '#text' || 
                                    child.nodeName === '#comment')
                                    {
                                        document.write("");
                                    }
                                    else {
                                        document.write("<li>" + 
                                        child.nodeName + "  " + 
                                        child.textContent + "</li>" + "
                                        <br>");
                                        for (var k = 0; k < 
                                        child.attributes.length; k++) {
                                            var attrib = child.attributes[k];
                                            if (attrib.specified === true) {
                                                document.write("<li>" + 
                                                attrib.name + " = " + 
                                                attrib.value + "</li>" + "
                                                <br>");
    
    
                                            }
                                            document.write("<br>");
                                        }
    
    
                                    }
    
    
                                }
                            }
                        };
                    }
         }
    
        <!DOCTYPE html>
        <html>
        <head>
          <title>
          </title>
          <script type="text/javascript">
          function loadXMLDoc(dname)
                    {
                        if (window.XMLHttpRequest)
                        {
                            xhttp=new XMLHttpRequest();
                        }
                        else
                        {
                            xhttp=new ActiveXObject("Microsoft.XMLDOM");
                        }
    
                        xhttp.open("GET",dname,false);
                        xhttp.send();
                        return xhttp.responseXML;
                    }
              var myxml = loadXMLDoc("test.xml");
              //document.write(myxml.getElementsByTagName("title")[0].childNodes[0].nodeValue + "<br>");
              var mybtn = document.getElementById('expand_parent');
              function myfun1(){
                var divarea = document.getElementById('myanchor');
                var msg = myxml.getElementsByTagName("bookstore")[0].childNodes[0].nodeValue;
                divarea.text = msg;
              }
              function myfun2(){
                var divarea = document.getElementById('mydiv');
                var output = "";
                var x = myxml.getElementsByTagName("title");
    
                for (i=0;i<x.length;i++)
                {
                  output += x[i].childNodes[0].nodeValue;
                  //output+=": ";
                  //output+=x[i].childNodes[0].nodeValue;
                  output+="<br>";
                }
                divarea.innerHTML = output;
              }
          </script>
        </head>
        <body onload="myfun1()">
          <a href="#" id="myanchor" onclick="myfun2();return false;">
          </a>
        <div id="mydiv"></div>
        </body>
        <html>
    
    and my xml is as follows : 
    <?xml version="1.0" encoding="UTF-8"?>
    <bookstore>Mybookstore
      <book category="cooking">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
      </book>
      <book category="children">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
      </book>
      <book category="web">
        <title lang="en">XQuery Kick Start</title>
        <author>James McGovern</author>
        <author>Per Bothner</author>
        <author>Kurt Cagle</author>
        <author>James Linn</author>
        <author>Vaidyanathan Nagarajan</author>
        <year>2003</year>
        <price>49.99</price>
      </book>
      <book category="web" cover="paperback">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
      </book>
    </bookstore>