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

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转义符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值