1

我在将 xml 对象中的属性从经典 asp 中获取到 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")%>");

这条线有什么问题?

4

2 回答 2

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);
    };​
于 2012-09-22T07:22:04.143 回答
0

使用反斜杠将第二个参数中的引号转义到 setAttribute 函数,或使用单引号。

于 2012-09-22T06:47:53.820 回答