欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-12 22:23:44
...

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

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

总结

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