在涉及引号时动态生成HTML

时间:2014-01-15 18:00:31

标签: javascript jquery

我有以下脚本:

function Start() {

    var TheData = 'tes"sst3\'k';

    var TheHTML = '<div class="SomeClass">' + TheData + '</div>';
    TheHTML += '<input type="text" id="TheTextBox" value="';
    TheHTML += TheData + '" />';

    $('#Dynamic').html(TheHTML);
}

基本上,我正在创建HTML并将一些可变文本嵌入其中。问题是文本包含引号,并且由于引号,文本框的值与标签的值不匹配。我怎么解决这个问题?

enter image description here

jsFiddle是here

由于

4 个答案:

答案 0 :(得分:3)

让jQuery担心所有这些并生成HTML这样更安全(出于这个原因):

var $input = $("<input>").attr("id","TheTextBox").val(TheData);
var $div = $("<div>").addClass("SomeClass").text(TheData).append($input);

var $wrapper = $("<div>").append($div);
var TheHTML = $wrapper.html();

答案 1 :(得分:2)

由于你正在使用jQuery,而不是担心转义字符串,只需这样做:

$(Start);
function Start() {
    var TheData = 'tes"sst3\'k';
    var TheHTML = '<div class="SomeClass">' + TheData + '</div>';
    TheHTML += '<input type="text" id="TheTextBox" />';
    $('#Dynamic').html(TheHTML);
    $('#TheTextBox').val(TheData);
}

<强> jsFiddle example

答案 2 :(得分:0)

您可以对引号进行编码,如下所示:

var TheData = 'tes&quot;sst3&apos;k';

答案 3 :(得分:0)

这是你的答案

$(Start);

function Start() {

    var TheData = 'tes"sst3\'k';

    var TheHTML = '<div class="SomeClass">' + TheData + '</div>';
    TheHTML += '<input type="text" id="TheTextBox" value=';
    TheHTML += TheData + ' />';

    $('#Dynamic').html(TheHTML);
}