本文介绍在 JavaScript 中动态生成 HTML 时,利用反斜杠(\)进行字符串换行拼接的技巧。该方法能显著提升代码可读性,但需注意转义字符对空格和制表符的处理差异,以及单引号内的转义规则,避免语法错误。
// blueDestiny, never-online // blueDestiny [at] 126.com
传统innerHTML拼接方式
通常,在动态设置container的innerHTML时,常规做法如下:
<div id="divc" />
<SCRIPT LANGUAGE="JavaScript">
var div = document.getElementById("divc");
var html = ""
html += ""
+ "<h1>"
+ "<a href='javascript:;' onclick=\"alert('javascript')\">DHTML innerHTML propery.</a>"
+ "</h1>";
div.innerHTML = html;
</SCRIPT>
虽然习惯后并不麻烦,但是否有更简便的方法?参考以下示例:
反斜杠换行拼接技巧
<SCRIPT LANGUAGE="JavaScript">
var html='\
<table width="100%" border="0" cellspacing="0" cellpadding="0">\
<tr>\
<td> </td>\
</tr>\
<tr>\
<td> </td>\
</tr>\
</table>\
';
alert(html);
</SCRIPT>
这种方法是否更简洁?但需注意以下几点,见后续示例。
单引号与特殊字符转义
<SCRIPT LANGUAGE="JavaScript">
//要用\'把单引号转义
var html='\
<h1>\
javascript技巧\
</h1>\
<a href="javascript:;" onclick="alert(\'javascript\')">javascript转义</a></font>\
<br/>\
power by \'blueDestiny, never-online\'\
';
alert(html);
</SCRIPT>
需要转义的地方仍需使用"\"。
'-------------------------------------------------------
' 原理:
'-------------------------------------------------------
此为个人见解,如有谬误请指正:
参考以下示例:
反斜杠对空格和制表符的处理
<SCRIPT LANGUAGE="JavaScript">
//s1和s2的字符a前都有一个空格
s1='\
a';
s2=' a';
document.write("s1: " + s1.length + "\ns2: " + s2.length);
</SCRIPT>
输出结果:
s1: 2 s2: 2
这表明转义符将回车符转义掉了!也就是说
再看一个示例:
<SCRIPT LANGUAGE="JavaScript">
//下面这个字符串是有空格的,也就是这样s1='\ 的。
s1='\
a';
document.write("s1: " + s1.length);
</SCRIPT>
输出错误,提示:未结束字符串常量。
这是由于多加了一个空格所致。尝试如下操作:
<SCRIPT LANGUAGE="JavaScript">
s1='\ \
a';
document.write("s1: " + s1.length);
</SCRIPT>
结果显而易见:在字符串中,"\"转义符可以消除回车(即回车符不存在),但无法转义制表符及空格(它们依然存在,如上例所示)。
最后,分享一个小技巧:回顾上述代码:
<SCRIPT LANGUAGE="JavaScript">
//要用\'把单引号转义
var html='\
<h1>\
javascript技巧\
</h1>\
<a href="javascript:;" onclick="alert(\'javascript\')">javascript转义</a></font>\
<br/>\
power by \'blueDestiny, never-online\'\
';
alert(html);
</SCRIPT>
仔细观察弹出的模态框,查看字符串的具体形态,即可明白原理。