js转义符的妙用:解决 以0开头的字符串传值 –以及– 传值过程中会出现乱码的问题


上例子

下面是我要通过这个id对这条信息进行修改,然而这个id是以0开头的;传过去的值是不正确的;

//这些是js里面的操作
<SCRIPT LANGUAGE="JavaScript"> 
var id=021341;
<button type="button" id="update" onclick="update('+id+')" class="btn btn-primary">修改</button>
function update(id){
        alert(id);//这时你会发现你的代码没错,但这里传过来的值就是错误的
}
</SCRIPT>

解决办法

这是因为没有对单引号进行转义,当你在JS传值有问题的话,你用转义符去转义后会发现值才是正确的;
转义符:“\”

//对id这个值进行转义\''+id+'\'
<button type="button" id="update" onclick="update(\''+id+'\')" class="btn btn-primary">修改</button>

转义后,传值正常。


详解js转义符

通常,我们在动态给定一个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>

结果很明显了,
在字符串中,”\”转义符可以将回车转义掉(也就是回车符不存在了),但是不能将制表符,以及空格字符转义(它们是存在的,上面的例子说明了这一点)。

最后,给大家一个小tips,还记得上面的这个代码吗?

<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>

仔细观察弹出来的模态框,看看字符串是怎么样的?应该就会明白了。

js特殊字符转义介绍

特殊字符

符号

转义符


.

\u002E

美元符号

$

\u0024

乘方符号

^

\u005E

左大括号

{

\u007B

左方括号

[

\u005B

左圆括号

(

\u0028

竖线

\u007C

右方括号

]

\u005D

右圆括号

)

\u0029

星号

*

\u002A

加号

+

\u002B

问号

?

\u003F

反斜杠

\

\u005C

Java防止字符转义 js防止字符串转义_js转义符

总结

因为我是做后端开发的,当时遇到这个问题后,问了好几个大神都不知道怎么回事,就觉得很奇怪;然而问了一下前端大神,迎刃而解了。
这是后端开发必须锁掌握的一个技巧—–js转义符