Javascript 使用jQuery将Textarea文本设置为格式正确的HTML代码

Javascript 使用jQuery将Textarea文本设置为格式正确的HTML代码,javascript,jquery,html,textarea,code-formatting,Javascript,Jquery,Html,Textarea,Code Formatting,我试图通过Javascript(jQuery)为我的Textarea生成文本,因为我需要在JS中包含一个变量。这就是我现在所做的: $("#txt_banner1").text( '<a href="'+producturl+'"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwa

我试图通过Javascript(jQuery)为我的Textarea生成文本,因为我需要在JS中包含一个变量。这就是我现在所做的:

$("#txt_banner1").text(
            '<a href="'+producturl+'"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="125" height="125"><param name="movie" value="../../images/banerxsky2.swf" /><param name="quality" value="high" /><embed src="http://www.xSkySoftware.com/images/banerxsky2.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="125" height="125"></embed></object>')
$(“#txt_banner1”).text(
'')
现在你可能会想:“伙计,格式化你的代码”。好吧,这就是问题所在-我希望我的文本区域包含正确格式化的HTML代码,但是当我在参数中格式化代码时,它不会工作(脚本停止)

有什么建议吗

编辑:格式化代码,该代码不起作用:

        $("#txt_banner1").text(
        '<a href="'+producturl+'">
        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="125" height="125">
        <param name="movie" value="../../images/banerxsky2.swf" />
        <param name="quality" value="high" />
        <embed src="http://www.xSkySoftware.com/images/banerxsky2.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="125" height="125">
        </embed>
        </object>');
$(“#txt_banner1”).text(
'
');
编辑2:这是我的文本区号:

<textarea id="txt_banner1"><a href="AFF_URL">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="125" height="125">
  <param name="movie" value="http://xSkySoftware.com//images/banerxsky2.swf" />
  <param name="quality" value="high" />
  <embed src="http://www.xSkySoftware.com/images/banerxsky2.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="125" height="125"></embed>
  </object>
</textarea>

您可以事先设置txt_banner1的值,只需在脚本中替换producturl即可:

<div id="txt_banner1"><a href='MY_NEW_URL'><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="125" height="125"><param name="movie" value="../../images/banerxsky2.swf" /><param name="quality" value="high" /><embed src="http://www.xSkySoftware.com/images/banerxsky2.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="125" height="125"></embed></object>

我建议您使用隐藏的
元素将链接标记放入页面本身:

<div id="content" style="display: none;"><a href="#">
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"
            width="125" height="125">
        <param name="movie" value="../../images/banerxsky2.swf" />
        <param name="quality" value="high" />
        <embed src="http://www.xSkySoftware.com/images/banerxsky2.swf"
               quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer"
               type="application/x-shockwave-flash" width="125" height="125" />
    </object>
</a></div>
var $content = $("#content").clone();
$content.children("a").attr("href", producturl);
$("#txt_banner1").val($content.html());

编辑:稍微调整标记以获得更好的结果。Fiddle可用。

您可以将剪下的HTML放在页面的隐藏容器中,并按您喜欢的方式格式化:

风格:

#html_codez { display: none }
标记:

<div id="html_codez">
    <a href="{producturl}">
        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"
            width="125" height="125"><param name="movie" value="../../images/banerxsky2.swf" />
            <param name="quality" value="high" />
            <embed src="http://www.xSkySoftware.com/images/banerxsky2.swf"
                quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer"
                type="application/x-shockwave-flash" width="125" height="125">
            </embed>
        </object>
    </a>
</div>
然后,您可以将其放置在文本区域内:

$("#txt_banner1").val(code.replace("{producturl}", producturl));

讽刺的回答是“你做错了”。别担心,这很容易解决

JavaScript不允许多行字符串。你可以写:

"foo bar\nbaz"
但不是

"foo bar
baz"
除非转义换行符(这不是ECMA规范的一部分,但我测试过的所有浏览器都支持这一点)

执行多行字符串的“正确”方法是向字符串中添加换行符,但您可以使用更多引号模拟换行符:

"foo bar\n"+
"baz"

是的,它很糟糕,但你已经做到了。

如果你添加不起作用的格式化代码,可能会有帮助-有人会告诉你为什么它不起作用。你能不能在字符串中包含“\r\n”序列以引入换行符?(简单的“\n”可能也行。)当然,通过这种方式,您可以按照您喜欢的任何方式格式化html,它似乎无法编译。@Niklas-这是我的JS:
$(“\txt\u banner1”).text.replace(“AFF\u URL”,producturl)-我注意到您的代码也不正确,缺少括号:P@Niklas-另外,请注意它是一个文本区域,而不是div:)@Niklas-我知道了,忘记了var文本…:)+1的正确答案,即“JavaScript不允许多行字符串”。我不建议将其作为解决方案,因为与其他解决方案相比,它有点难看,但它是准确的。
"foo bar
baz"
"foo bar\
baz"
"foo bar\n"+
"baz"