javascript拼接字符串

来源:互联网 发布:上海华腾软件怎么样 编辑:程序博客网 时间:2024/05/01 14:17

当使用javascript动态生成dom的时候,总会用到字符串的拼接。比如会出现这种情况。

function getStr(name, xinbie, age, txt) {    return '<div id="'+ name + '"> '+ name +'</div>' +            '<div>'+ xinbie +'</div>' +            '<div>'+ age +'</div>' +            '<div>'+ text +'</div>';} 

真的是太难看了。参数一多更不好看了。 改为以下函数来格式化一下

function formatString(/*format, Arg...*/) {    var str = arguments[0];    var params = [];    if(typeof str !== 'string')        throw 'First argument is not a string object';    if($.isPlainObject(arguments[1])) {        params = arguments[1];        for (var key in params) {            str = str.replace(new RegExp('%\\{' + key + '\\}%', "g"), params[key]);        }    } else {        params = [].splice.call(arguments, 1);        var matchs = str.match(new RegExp('%\\{\\w+\\}%', "g"));        matchs = matchs.filter(function(val, idx, arr){ return arr.indexOf(val) == idx; });        for(var idx in params) {            str = str.replace(new RegExp(matchs[idx], "g"), params[idx]);        }    }    return str;}

这样的话,上面那种可以这样写了

function getStr(name, xinbie, age, txt) {    var template = '<div id="%{name}%">%{name}%</div>'+                    '<div>%{xinbie}%</div>'+                    '<div>%{age}%</div>'+                    '<div>%{text}%</div>';    return formatString(template, {        name: name,        xinbie: xinbie,        age: age,        txt: txt    });}

虽然比上面写的更多, 但是我认为更清晰一点。看起来更整体一点。不会被+号分割。

0 0
原创粉丝点击