2011-10-13 60 views
1

UPDATE: 有人說,他們能夠獲得超過1個childNode ... 這裏是我的fiddle - 我只獲得1個childNode顯示。JavaScript的幫助 - 做一個老派的方式新的東西

錯誤在哪裏?

原來的問題 下面是我繼承了javascript代碼的部分片段。基本上這個函數通過調用AJAX函數來獲取XML數據。但是,由於需求更改,我生成一個XML字符串並將該字符串存儲在屏幕上的隱藏輸入變量中(經典ASP)。

在仔細觀察原始腳本後,我發現如果我能以某種方式將我的xml字符串傳入cmdxml變量將會很好。但是,當我設置cmdxml等於我的xml字符串:cmdxml = $.parseXML(xmlVal);,然後嘗試使用下面的代碼片段,它只獲得1個子節點。我已經在下面傳遞了一個xml字符串的小片段。

舊JavaScript函數(部分)使用cmdxml:

if (req.responseXML!=null) { 
     var PropName; 
     var PropValue;    
     var cmdxml = req.responseXML.documentElement; 
     // read each document element child node in the XML document 

    for (var c =0;c<cmdxml.childNodes.length;c++) { 
      var m; 
      var t = cmdxml.childNodes[c]; //req.responseXML.documentElement.childNodes[c] 
      if (t!=null) { 
      //console.log(t.nodeName); 
      switch(t.nodeName) {  //req.responseXML.documentElement.childNodes[c].nodeName 
        case "RObject": { //response object 
         var RObject = t;  
        //req.responseXML.documentElement.childNodes[c].nodeName.attributes[2].value 
        var CtrlChangeType = RObject.attributes[2].value; 
         var CtrlObjName = RObject.attributes[1].value; 
         var CtrlObjType = RObject.attributes[0].value; 
         var CtrlObj; 

        var RObjProp = RObject.getElementsByTagName("Property"); 
        PropName = RObjProp[0].attributes[0].value; 
         PropValue = getElementText(RObjProp[0].getElementsByTagName("Value")[0]); 

        switch (CtrlChangeType) { //req.responseXML.documentElement.childNodes[c].nodeName.attributes[0].value 
         case "comboboxInsRow": { 

這裏是我的XML字符串的一個片段,我路過:

<?xml version="1.0" ?><xCMDS><JCallBack ProgramName="x"><Value><![CDATA[top.closeCtrlLoading();]]></Value></JCallBack><RObject Type="E" Name="gH2ptObj_co_code" ChangeType="objProp" rowNum="" colNum=""><Property Name="value"><Value><![CDATA[]]></Value></Property></RObject> 
+2

當我使用'alert($。parseXML('snippet')。documentElement.childNodes.length)'時,我得到了2個childNodes代碼片段,'' 。但我追加了遺漏的結尾''-tag。 –

+0

@ Dr.Molle - 我看到你在這裏做了什麼。爲什麼我不能將$ .parseXML(xmlVal)傳遞給cmdxml? - 順便說一句,如果你把這個作爲答案我會接受它。 – webdad3

回答

2

parseXML返回一個XMLDocument, 。您需要設置cmdxml zo $ .parseXML('snippet')。documentElement來訪問childNodes(childNodes是節點的屬性,通常在文檔中不可用)。

你的小提琴會返回一個childNode,但這是根元素,你喜歡訪問根元素的childNodes。

相關問題