我正在维护一个函数,该函数在DOM上创建一个元素,其中onclick
事件‡设置为传递给该函数的参数。它的工作原理与此非常相似:
var msg="Hi therenGood 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/):
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 therenGood to see younAlways 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/