vbscript:从经典的asp xml对象获取属性到javascript

时间:2012-09-22 06:40:39

标签: javascript asp-classic

我在从经典的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")%>");

这条线有什么问题?

2 个答案:

答案 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函数,或使用单引号。