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 関数の 2 番目のパラメーターの引用符をバックスラッシュでエスケープするか、一重引用符を使用します。

于 2012-09-22T06:47:53.820 に答える