前端: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转义符
上一篇: 面试题:反转链表
下一篇: Spring详解(二)【Ioc控制反转】