从字符串Jquery中添加标记内的文本

时间:2014-06-10 12:31:28

标签: javascript jquery

我有一个输入字段并在其中输入XHTML代码,它返回修改后代码的输出,例如我在以下输入中输入数字:

<label> Text <label>
<p> RESULT TEXT </p>
<label> Text <label>
 <p> RESULT TEXT </p>
<label> Text <label>
 <p> RESULT TEXT </p>
<label> Text <label>
 <p> RESULT TEXT </p>

我需要在标记<p>中添加以下单词“Box”,并且只将第一个字母保留为大写,其余字母保留为小写。以这种方式获得底线:

<label> Text <label>
<p> Result text box </p>
<label> Text <label>
 <p> Result text box </p>
<label> Text <label>
 <p> Result text box </p>
<label> Text <label>
 <p> Result text box </p>

我正在尝试使用以下代码执行此操作:

var code = $('textarea[name=message]').val();
        /* prevent the creation of multiple output-blocks if someone clicks on the submit-button more than once */
        if ($('#output').length < 1) {
            $("body").append('<h2>Output</h2><textarea id="output" rows="10" cols="100"></textarea>');
        }

        code = code.find(p).text("box");
        code = code..replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});



        $('#output').val(code);

1 个答案:

答案 0 :(得分:2)

一些问题:

  • 您的label代码被错误关闭(您忘记了/
  • 您的code变量是字符串而不是jquery对象,因此您无法对其执行find
  • code..replace双点
  • 语法错误
  • .find(p)中,p未定义。你想要的是传递一个字符串,所以你必须用引号括起来。 .find('p')

使用类似的内容修复所有这些问题

var code = $('textarea[name=message]').val();

/* prevent the creation of multiple output-blocks if someone clicks on the submit-button more than once */
if ($('#output').length < 1) {
    $("body").append('<h2>Output</h2><textarea id="output" rows="10" cols="100"></textarea>');
}

// create a jquery object out of the code
var livehtml = $('<div/>', {
    html: code
});

// find the <p> elements and alter their html
livehtml.find('p').append("box").html(function (idx, currentHtml) {
    return currentHtml.charAt(0).toUpperCase() + currentHtml.substr(1).toLowerCase();
});

$('#output').val(livehtml.html());

演示 http://jsfiddle.net/UpYgA/