2012-09-22 64 views
1

我有一個問題,從一個xml對象從傳統的asp獲取JavaScript的屬性爲JavaScript。下面是我的代碼:vbscript:從傳統的asp xml對象獲取屬性到javascript

if(len>0){ 
<%for xx=0 to SNodes.length-1%>//asp code 
{ 
//Javascript code 
var IXmlNode=xmlnewObj.createElement("I"); 
IXmlNode.setAttribute("a",document.getElementById('a'+xx).value); 
IXmlNode.setAttribute("X","<%=SNodes.item(xx).getAttribute("PP")%>"); 
xmlnewObj.documentElement.appendChild(IXmlNode); 
<% next %>//asp code 
} 
} 

這裏SNodes對XML喜歡:

<tag><tag1 a="iii" PP="asdasdf"/><tag1 a="aaa" PP="asdasdf"></tag> 

只有這條線困擾着我:

IXmlNode.setAttribute("X","<%=SNodes.item(xx).getAttribute("PP")%>"); 

什麼是錯的這條線?

回答

1

你想要輸出什麼樣的JavaScript?因爲它現在站在你會得到這樣的事情它永遠不會成功:

if (len > 0) { 
    { 
     var IXmlNode = xmlnewObj.createElement("I"); 
      IXmlNode.setAttribute("a", document.getElementById('a' + xx).value); 
     IXmlNode.setAttribute("X", "PP"); 
     xmlnewObj.documentElement.appendChild(IXmlNode); 
    } 
    { 
     var IXmlNode = xmlnewObj.createElement("I"); 
     IXmlNode.setAttribute("a", document.getElementById('a' + xx).value); 
     IXmlNode.setAttribute("X", "PP2"); 
     xmlnewObj.documentElement.appendChild(IXmlNode); 
    } 
} 

它可以像這樣工作,但我仍然懷疑這是你需要的東西:

if (len > 0) { 
    (function() { 
     var IXmlNode = xmlnewObj.createElement("I"); 
      IXmlNode.setAttribute("a", document.getElementById('a' + xx).value); 
     IXmlNode.setAttribute("X", "asdasdf"); 
     xmlnewObj.documentElement.appendChild(IXmlNode); 
    })(); 
    (function() { 
     var IXmlNode = xmlnewObj.createElement("I"); 
     IXmlNode.setAttribute("a", document.getElementById('a' + xx).value); 
     IXmlNode.setAttribute("X","asdasdf"); 
     xmlnewObj.documentElement.appendChild(IXmlNode); 
    })(); 
} 

你最好的選擇可能會把它變成一個函數,並通過你的asp變量:

if(len>0){ 
    <%for xx=0 to SNodes.length-1%>//asp code 
    { 
     xmlAppender(<%=xx%>, <%=SNodes.item(xx).getAttribute("PP")%>); 
    } 
    <% next %> 
} 

var xmlAppender = function(i, childData) { 
     var IXmlNode = xmlnewObj.createElement("I"); 
     IXmlNode.setAttribute("a", document.getElementById('a' + i).value); 
     IXmlNode.setAttribute("X", childData); 
     xmlnewObj.documentElement.appendChild(IXmlNode); 
    };​ 
+0

:謝謝你的好回答,這幾乎是個訣竅,'xx'怎麼沒有在這裏用實際值取代?'xx'只剩下'xx',但沒有價值。 – user1495475

+0

哦,我明白了。應該是xmlAppender(<%=xx%>,<%= SNodes.item(xx).getAttribute(「PP」)%>);我會爲此編輯答案。我希望這個對你有用。 – AardVark71

+0

:它是固定的。我只是在這裏給'xx'一個javascrpit變量,然後在那裏增加。謝謝你的回答。 – user1495475

0

使用反斜槓將第二個參數中的引號轉義到setAttribute函數,或使用單引號。

+0

@ user1203729:對不起,這沒有奏效。 – user1495475