在js开发中,我们可能会遇到这样一个问题
当需要通过js动态插入html标签的时候
特别是当遇到大量的变量拼接、引号层层嵌套的情况,会出现转义字符问题,经常出错
我们来看个例子
window.onload = function () {
var id = '1';
var code = 'zhangsan';
var name = '张三';
document.getElementById('test').innerHTML = '' + name + '';
}
function buttonClick(id, code) {
alert(id + '-' + code);
}
运行直接报错
接下来把转义字符\"改成\'试下
运行之后,发现仍然无法正常显示
这样的代码不光看起来杂乱无章、难以维护,关键是很容易出错
接下来我们开始封装格式化字符串方法
String.js
(function () {
///
/// 引号转义符号
///
String.EscapeChar = '\'';
///
/// 替换所有字符串
///
/// 检索值
/// 替换值
String.prototype.replaceAll = function (searchValue, replaceValue) {
var regExp = new RegExp(searchValue, "g");
return this.replace(regExp, replaceValue);
}
///
/// 格式化字符串
///
String.prototype.format = function () {
var regexp = /\{(\d+)\}/g;
var args = arguments;
var result = this.replace(regexp, function (m, i, o, n) {
return args[i];
});
return result.replaceAll('%', String.EscapeChar);
}
})();
通过占位符传递变量值,用%替代了引号转义符,代码简洁了很多,也非常方便维护,出错的机率也小了很多
window.onload = function () {
var id = '1';
var code = 'zhangsan';
var name = '张三';
document.getElementById('test').innerHTML = '{2}'.format(id, code, name);
}
function buttonClick(id, code) {
alert(id + '-' + code);
}
看下测试效果
测试结果正确,并且点击事件中也正确接收到了参数值
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!