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) {
}
当执⾏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) {
}
//转换⽅法
function EscapeChar(HaveSpecialval) {
//转换半⾓单引号
HaveSpecialval = place(/\'/g, "\\\'");
//也可以使⽤´
js在字符串中添加字符HaveSpecialval = place(/\'/g, "´");
return HaveSpecialval;
}
如果参数中含有半⾓双引号时,也可以使⽤转义的⽅法处理,但是不能使⽤下⾯这种⽅式
//转换半⾓双引号
HaveSpecialval = place(/\'/g, "\\\"");
\"是javascript的转义格式,html语⾔⽆法对\"进⾏解析,此时要使⽤html的转义字符&";或者"
HaveSpecialval = place(/\"/g, """);
HaveSpecialval = place(/\"/g, """);
html转义字符要以&开头 ;结尾中间不能有空格;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论