首页 > 解决方案 > 附加到循环内的按钮时,如何在 JavaScript 中解析 XML 并在 nodeValue 中保留空格?

问题描述

我正在解析一个 xml 结果集并将 nodeValues 附加到按钮上。我正在尝试将该按钮的值设置为节点值,并且当节点值中没有空间时它可以工作,但是当有空间时它会分开。我还将按钮的文本设置为效果很好的节点值,当此处有空格时,它不会将节点值分开,仅在设置值时。

我尝试将 nodeValue 设置为循环中的变量并在那里对其进行格式化,但是在设置值时如果有空格,它仍然会将其分开。

var i;
        var xmlDoc = xml.responseXML;
        var li = "";
        var x = xmlDoc.getElementsByTagName("string");
        var valueName;

        for (i = 0; i < x.length; i++) {                
            li += "<li><button id=documentBtn class=btnNav onclick=javascript:hideFunction(value) value=" + "" + x[i].childNodes[0].nodeValue; + "" + ">" +
                x[i].childNodes[0].nodeValue +
                "</button ></li >";                
        }            

这是产生这个:

<button class="btnNav" id="documentBtn" onclick="javascript:hideFunction(value)" value="Site" safety="" specific="" plans="">Site Specific Safety Plans</button>

它应该产生这个:

<button class="btnNav" id="documentBtn" onclick="javascript:hideFunction(value)" value="Site Specific Safety Plans">Site Specific Safety Plans</button>

标签: javascriptxml

解决方案


代码实际输出的是:

<button class=btnNav id=documentBtn onclick=javascript:hideFunction(value) value=Site Specific Safety Plans>Site Specific Safety Plans</button>

包含空格的 HTML 属性值必须用引号 (''"") 括起来才能正确处理:

var i;
var xmlDoc = xml.responseXML;
var li = "";
var x = xmlDoc.getElementsByTagName("string");
var valueName;

for (i = 0; i < x.length; i++) {                
    li += "<li><button id=documentBtn class=btnNav onclick=javascript:hideFunction(value) value='" + x[i].childNodes[0].nodeValue + "'>" +
        x[i].childNodes[0].nodeValue +
        "</button></li>";                
}  

上面的代码应该产生:

<button class=btnNav id=documentBtn onclick=javascript:hideFunction(value) value='Site Specific Safety Plans'>Site Specific Safety Plans</button>

推荐阅读