最近在做项目时,遇到一个问题。当在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, "\\\'"); //也可以使用&acute;
HaveSpecialval = HaveSpecialval.replace(/\'/g, "&acute;");
return HaveSpecialval;
}

如果参数中含有半角双引号时,也可以使用转义的方法处理,但是不能使用下面这种方式

//转换半角双引号
HaveSpecialval = HaveSpecialval.replace(/\'/g, "\\\"");

\"是javascript的转义格式,html语言无法对\"进行解析,此时要使用html的转义字符&&quot;或者"

            HaveSpecialval = HaveSpecialval.replace(/\"/g, "&quot;");

            HaveSpecialval = HaveSpecialval.replace(/\"/g, """);

html转义字符要以&开头 ;结尾 中间不能有空格;

http://www.cnblogs.com/shanaihuan/archive/2012/11/03/2753009.html

js方法参数中含有单引号双引号的处理的更多相关文章

  1. python中的单引号双引号和三引号

    python的单引号和双引号没有本质的区别,而三引号有两种作用:注释和换行 一. 单引号中可以包含双引号,双引号中可以包含单引号 print("好好学习,'天天向上'") 结果: ...

  2. js、html中的单引号、双引号及其转义使用

    js.html中的单引号.双引号及其转义使用在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<in ...

  3. 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配置文件 ...

  4. jquery的JSON字符串处理、单引号双引号的转换

    1.jquery的JSON字符串处理 var pwdlevel_val = "{"minLength":1,"maxLength":20," ...

  5. JS 和 HTML 中的单引号与双引号

    JS中的单引号与双引号 HTML中的单引号与双引号很简单,就是两个字符实体: 显示 描述 实体名称 实体编号 " 双引号.引号 " " ' 单引号.撇号 &apo ...

  6. shell单引号双引号详解

    linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了) " "(双引号)与 ' '(单引号)的区别    你在shell prompt(shell 提示)后面敲 ...

  7. C语言 单引号 双引号问题

    C语言中的单引号和双引号含义迥异,用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值,因此,采用ASCII字符集的编译器而言,‘a’的含义与0141或97严格一 ...

  8. Oracle 单引号 双引号 转义符 分隔符

    概述 单引号用来标记字符串 双引号用来标记识别对象名 以下使用会比较绕: 字符串中出现单引号.双引号: 表或字段等对象的别名(alias)中出单引号.双引号: 单引号.双引号与空格一起使用: 双引号 ...

  9. Js参数值中含有单引号或双引号解决办法

    <script type="text/javascript"> function Display(LoginEmail, UserName, ID) {         ...

随机推荐

  1. Golden Eggs HDU - 3820(最小割)

    Golden Eggs Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. 【XSY1301】原题的价值 第二类斯特林数 NTT

    题目描述 给你\(n,m\),求所有\(n\)个点的简单无向图中每个点度数的\(m\)次方的和. \(n\leq {10}^9,m\leq {10}^5\) 题解 \(g_n\)为\(n\)个点的无向 ...

  3. 【BZOJ4061】[Cerc2012]Farm and factory(最短路,构造)

    [BZOJ4061][Cerc2012]Farm and factory(最短路,构造) 题面 BZOJ 然而权限题QwQ. 题解 先求出所有点到达\(1,2\)的最短路,不妨记为\(d_{u,1}, ...

  4. 「九省联考 2018」IIIDX 解题报告

    「九省联考 2018」IIIDX 这什么鬼题,送的55分要拿稳,实测有60? 考虑把数值从大到小摆好,每个位置\(i\)维护一个\(f_i\),表示\(i\)左边比它大的(包括自己)还有几个数可以选 ...

  5. Nginx实现负载均衡的几种方式

    负载均衡的几种常用方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. upstream backserver { server 192.168 ...

  6. 深挖JDK动态代理(二):JDK动态生成后的字节码分析

    接上一篇文章深挖JDK动态代理(一)我们来分析一下JDK生成动态的代理类究竟是个什么东西 1. 将生成的代理类编程一个class文件,通过以下方法 public static void transCl ...

  7. Python3 与 C# 并发编程之~ 线程篇

      2.线程篇¶ 在线预览:https://github.lesschina.com/python/base/concurrency/3.并发编程-线程篇.html 示例代码:https://gith ...

  8. 51Nod--1076 2条不相交的路径(强连通分量)

    电波 #include<bits/stdc++.h> using namespace std; #define LL long long #define maxn 30000 vector ...

  9. NowCoder--牛可乐发红包脱单ACM赛C_区区区间间间

    题目链接:C_区区区间间间 思路:算贡献,求出每个数为当前最大值时所在的区间个数,和每个数为最小值的区间个数 和这个题有点类似 搭配食用效果更佳 点击这里 #include<bits/stdc+ ...

  10. 最全面的 Spring 学习笔记

    http://www.codeceo.com/article/learn-spring.html 来源:泊浮目 分享到:更多36 Spring致力于提供一种方法管理你的业务对象.在大量Java EE的 ...