2012-09-22 79 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