用JavaScript写一个类似PHP print_r的函数
PHP print_r的函数很好用,网上娱乐城可以用来打印数组、对象等的结构与数据,可惜JavaScript并没有原生提供类似的函数。不过我们可以试着自己来实现这个函数,下面提供一些方法与思路。
方法一
function print_r(theObj) { var retStr = ‘‘; if (typeof theObj == ‘object‘) { retStr += ‘<div style="font-family:Tahoma; font-size:7pt;">‘; for (var p in theObj) { if (typeof theObj[p] == ‘object‘) { retStr += ‘<div><b>[‘+p+‘] => ‘ + typeof(theObj) + ‘</b></div>‘; retStr += ‘<div style="padding-left:25px;">‘ + print_r(theObj[p]) + ‘</div>‘; } else { retStr += ‘<div>[‘+p+‘] => <b>‘ + theObj[p] + ‘</b></div>‘; } } retStr += ‘</div>‘; } return retStr; }
方法二
$(document).ready(function(){ $(‘#btn‘).click(function(){ var jsonStr = $(‘#jsonData‘).val(); var json = eval(‘(‘+jsonStr+‘)‘); (function(){ var print_r = function(o, depth) { var result = ‘‘; depth || (depth=1); var indent = new Array(4*depth+1).join(‘ ‘); var indentNext = new Array(4*(depth+1)+1).join(‘ ‘); var indentNextTwo = new Array(4*(depth+2)+1).join(‘ ‘); var tmp = ‘‘; var type = typeof o; switch(type) { case ‘string‘: case ‘number‘: case ‘boolean‘: case ‘undefined‘: case ‘function‘: tmp += indent + indentNext + o + "\n"; break; case ‘object‘: default: for(var key in o) { tmp += indentNextTwo + ‘[‘ + key + ‘] = ‘; tmp += print_r(o[key], (depth+1)); } } result += type + "\n"; result += indentNext + ‘(‘ + "\n"; result += tmp; result += indentNext + ‘)‘ + "\n"; return result; }; alert(print_r(json)); }(json)); }); });
方法三
print_r:function(theObj) { var retStr = ‘‘; if (typeof theObj == ‘object‘||typeof theObj == ‘array‘) { retStr += ‘<div style="font-family:Tahoma; font-size:7pt;">‘; for (var p in theObj) { if (typeof theObj[p] == ‘object‘ || typeof theObj[p] == ‘array‘) { retStr += ‘<div><b>[‘+p+‘] => ‘ + typeof(theObj) + ‘</b></div>‘; retStr += ‘<div style="padding-left:25px;">‘ + XFUPLOAD.Tools.print_r(theObj[p]) + ‘</div>‘; } else { retStr += ‘<div>[‘+p+‘] => <b>‘ + theObj[p] + ‘</b></div>‘; } } retStr += ‘</div>‘; } $("body").append(retStr); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。