如何传递包含一个或多个嵌入式新行代码的字符串?

时间:2014-03-14 21:48:57

标签: javascript internet-explorer-8

我正在维护一个在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);会导致此错误(see for yourself on the jsfiddle at http://jsfiddle.net/jhfrench/HetQD/):

  

未捕获的SyntaxError:意外的标记ILLEGAL

当我检查DOM时,我看到了这一点(注意alert()中的新行):

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

如何传递包含一个或多个嵌入式新行代码的字符串?

注意事项:

  • 我正在开发一个最近升级到IE8的封闭系统。
  • 由于整个系统都使用此模板,因此无法使用jQuery扩充代码

‡ - 我知道,我知道 - “维护”,而非“写作”

1 个答案:

答案 0 :(得分:2)

您可以简单地双击\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/