js方法参数中含有单引号双引号的处理
最近在做项目时,遇到一个问题。当在js脚本中,拼接生成一个tr,然后添加到一个表格里。

//假定testval是从后台传过来的数据
var testval = "含有'半角单引号的字符串"; //向表格中添加行数据
function BindTable() {
var trval = "<tr><td><a href = '#' onclick =\"BindText('" + testval + "')\">测试</a></td></tr>";
$("#EscapeTable").append(trval);
} //向某文本框显示当前选中行的数据
function BindText(textval) {
document.getElementById("Text1").value = textval;
}

当执行BindTable(),向表格EscapeTable添加上这一行数据后,单击超连接"测试"时,没有执行BindText()方法。
此时感觉很奇怪,为什么单击"测试",没有执行BindText()方法。经过调试发现,原来此testval值有特殊的地方,就是含有单引号。于是把单引号去掉后,就可以正常执行BindText()方法。
那么为什么有单引号,就不执行BindText()方法呢?原因是:如果含有半角单引号(全角没有问题)的字符串,作为BindText()的参数,那么
此行代码
var trval = "<tr><td><a href = '#' onclick =\"BindText('" + EscapeChar(testval) + "')\">测试</a></td></tr>";
生成的html代码就是
<tr><td><a href = '#' onclick ="BindText('含有'半角单引号的字符串')">测试</a></td></tr>
此时生成的BindText参数的格式是不正确的。
找到问题就好解决了,于是写了一个方法,把testval中的单引号,进行转义

//向表格中添加行数据
function BindTable() {
var trval = "<tr><td><a href = '#' onclick =\"BindText('" + EscapeChar(testval) + "')\">测试</a></td></tr>";
$("#EscapeTable").append(trval);
} //向某文本框显示当前选中行的数据
function BindText(textval) {
document.getElementById("Text1").value = textval;
} //转换方法
function EscapeChar(HaveSpecialval) {
//转换半角单引号
HaveSpecialval = HaveSpecialval.replace(/\'/g, "\\\'"); //也可以使用´
HaveSpecialval = HaveSpecialval.replace(/\'/g, "´");
return HaveSpecialval;
}

如果参数中含有半角双引号时,也可以使用转义的方法处理,但是不能使用下面这种方式
//转换半角双引号
HaveSpecialval = HaveSpecialval.replace(/\'/g, "\\\"");
\"是javascript的转义格式,html语言无法对\"进行解析,此时要使用html的转义字符&"或者"
HaveSpecialval = HaveSpecialval.replace(/\"/g, """); HaveSpecialval = HaveSpecialval.replace(/\"/g, """);
html转义字符要以&开头 ;结尾 中间不能有空格;
http://www.cnblogs.com/shanaihuan/archive/2012/11/03/2753009.html
js方法参数中含有单引号双引号的处理的更多相关文章
- python中的单引号双引号和三引号
python的单引号和双引号没有本质的区别,而三引号有两种作用:注释和换行 一. 单引号中可以包含双引号,双引号中可以包含单引号 print("好好学习,'天天向上'") 结果: ...
- js、html中的单引号、双引号及其转义使用
js.html中的单引号.双引号及其转义使用在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<in ...
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课
centos shell基础知识 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 ...
- jquery的JSON字符串处理、单引号双引号的转换
1.jquery的JSON字符串处理 var pwdlevel_val = "{"minLength":1,"maxLength":20," ...
- JS 和 HTML 中的单引号与双引号
JS中的单引号与双引号 HTML中的单引号与双引号很简单,就是两个字符实体: 显示 描述 实体名称 实体编号 " 双引号.引号 " " ' 单引号.撇号 &apo ...
- shell单引号双引号详解
linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了) " "(双引号)与 ' '(单引号)的区别 你在shell prompt(shell 提示)后面敲 ...
- C语言 单引号 双引号问题
C语言中的单引号和双引号含义迥异,用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值,因此,采用ASCII字符集的编译器而言,‘a’的含义与0141或97严格一 ...
- Oracle 单引号 双引号 转义符 分隔符
概述 单引号用来标记字符串 双引号用来标记识别对象名 以下使用会比较绕: 字符串中出现单引号.双引号: 表或字段等对象的别名(alias)中出单引号.双引号: 单引号.双引号与空格一起使用: 双引号 ...
- Js参数值中含有单引号或双引号解决办法
<script type="text/javascript"> function Display(LoginEmail, UserName, ID) { ...
随机推荐
- 【XSY2751】Mythological IV 线性插值
题目描述 已知\(f(x)\)为\(k\)次多项式. 给你\(f(0),f(1),\ldots,f(k)\),求 \[ \sum_{i=1}^nf(i)q^i \] \(k\leq 500000,n\ ...
- CODEFORCES掉RATING记 #5
比赛:Codeforces Round #429 (Div. 2) 时间:2017.8.1晚 这次感觉状态不好,就去打div2了 A:有\(26\)种颜色的气球,每种的数量不一样,你要把这 ...
- shopNC 拓扑图
shopNC :
- 【 HDU3294 】Girls' research (Manacher)
BUPT2017 wintertraining(15) #5F HDU - 3294 题意 给定字母x,字符串变换一下: 'x'-1 -> 'z', 'x'->'a', 'x'+1-> ...
- 分数规划模板(洛谷P4377 [USACO18OPEN]Talent Show)(分数规划,二分答案,背包)
分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限 ...
- SCOI2016 Day2 简要题解
「SCOI2016」妖怪 题意 有 \(n\) 只妖怪,每只妖怪有攻击力 \(\text{atk}\) 和防御力 \(\text{dnf}\) ,在环境 \((a, b)\) 下,它可以把攻击力和防御 ...
- 聊聊jvm的CompressedClassSpace
序本文主要研究一下jvm的CompressedClassSpace CompressedClassSpacejava8移除了permanent generation,然后class metadata存 ...
- 【Loj117】有源汇上下界最小流(网络流)
[Loj117]有源汇上下界最小流(网络流) 题面 Loj 题解 还是模板题. #include<iostream> #include<cstdio> #include< ...
- Swarm部署集群
swarm-manager 是 manager node,swarm-worker是 worker node.所有节点的 Docker 版本均不低于 v1.12.在master上 docker swa ...
- bzoj2555(后缀自动机+LCT)
题目描述 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作. 题解 做法很自然,建出后缀自动机,维护每个节点的right ...