我在从经典的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")%>");
这条线有什么问题?
答案 0 :(得分: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);
};
答案 1 :(得分:0)
使用反斜杠将第二个参数中的引号转义为setAttribute函数,或使用单引号。