0

我的 jQuery 有一些奇怪的行为。我jQuery 1.10.2从谷歌的 ajax api 运行。

根据jQuery 文档,该.html()函数应该.empty()在插入文本之前调用该函数。我的问题是我有一个具有唯一 id 的 div 容器,当我使用该.html()函数插入文本时,默认文本被清除并插入了我想要的文本,这应该会发生。

<div id="xmlContent">
    this is a test <!-- Default Text -->
</div>

但是,如果我再次单击“添加文本按钮”,则新文本只会附加到先前生成的内容中,而不是替换它。更进一步,如果我继续单击按钮,新内容将嵌套在第一个子元素中。

<div id="xmlContent">
    <code>
        &lt;code&gt;
            &lt;name&gt;fred<br>
        <address></address><br>
        <issitelocation></issitelocation><br>
    </code>
    <name>fred</name><br>
    <address>addres</address><br>
    <issitelocation></issitelocation><br>
</div>

在相关主题上,.empty()清除默认文本,但拒绝清除任何生成的内容。

我在这里的 jsfiddle 中有代码。

代码也在这里

function generateXML() {
    xmlHTML += '<name>' + $('#locationName').val() + '</name><br />';
    xmlHTML += '<address>' + $('#address').val() + '</address><br />';
    xmlHTML += '<isSiteLocation>' + $('#isPathwaySite').val() + '</isSiteLocation><br />';
    xmlHTML = xmlHTML.replace('<','&lt;').replace('>','&gt;');
    xmlHTML = '<code>'+xmlHTML+'</code>';
}


function populateXMLContainer() {
    $('#xmlContent').html(xmlHTML);
}

$(function() {
    $('#generateXML').click(function() {
        generateXML();
        populateXMLContainer();
    });
});

请帮忙,我不知道我做错了什么。

澄清说明&lt;和 的原因&gt;是因为我正在尝试为自己创建一个 xml 生成器。

4

1 回答 1

2

这是因为函数 generateXML 的第一行是第一次的串联。在第一次通过 xmlHTML 时是一个空字符串,之后的每一次通过都只是增加了上一次的值。

改变:

xmlHTML += '<name>' + $('#locationName').val() + '</name><br />';

成为:

xmlHTML = '<name>' + $('#locationName').val() + '</name><br />';
于 2013-07-19T20:50:56.603 回答