如何传递带有一个或多个嵌入的新行代码的字符串

How do I pass a string with one or more embedded new line codes?

本文关键字:新行 代码 字符串 何传递 有一个      更新时间:2023-09-26

我正在维护一个函数,该函数在DOM上创建一个元素,其中onclick事件‡设置为传递给该函数的参数。它的工作原理与此非常相似:

var msg="Hi there'nGood to see you",
    returnElement=function(message) {
        document.getElementById("manipulate_me").innerHTML='<span onClick="alert('''+message+''');">click me and I throw a JavaScript error</span>';
    };

在包含<div id="manipulate_me">Gets replaced</div>的HTML页面上,执行returnElement(msg);会导致此错误(参见http://jsfiddle.net/jhfrench/HetQD/):

上的jsfiddle)。

Uncaught SyntaxError: Unexpected token ILLEGAL

当我检查DOM时,我看到以下内容(注意alert()中的新行):

<span onclick="alert('Hi there
Good to see you');">click me and I throw a JavaScript error</span>

如何传递带有一个或多个嵌入的新行代码的字符串?

事项:

  • 我正在开发一个最近升级到IE8的封闭系统。
  • 因为这个模板在整个系统中使用,用jQuery增加代码是不可能的

‡-我知道,我知道,"维护",而不是"写"

您可以简单地对'n进行双转义来完成此操作:

var msg="Hi there'nGood to see you'nAlways a pleasure",
    returnElement=function(message) {
        document.getElementById("manipulate_me").innerHTML='<span onClick="alert('''+message.split("'n").join("''n")+''')+''');">click me and I throw a JavaScript error</span>';
    };
returnElement(msg);

这是更新后的jsfiddle: http://jsfiddle.net/HetQD/15/