JavaScrip实现PHP print_r的数功能(三种方法)

 更新时间:2013年11月12日 15:43:41   作者:  
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);
}

相关文章

  • CheckBox多选取值及判断CheckBox选中是否为空的实例

    CheckBox多选取值及判断CheckBox选中是否为空的实例

    下面小编就为大家带来一篇CheckBox多选取值及判断CheckBox选中是否为空的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • javascript实现日期格式转换

    javascript实现日期格式转换

    这篇文章主要介绍了javascript实现日期格式转换,非常的简单实用,项目中经常可以用到,这里推荐给大家
    2014-12-12
  • JS实现二维数组元素的排列组合运算简单示例

    JS实现二维数组元素的排列组合运算简单示例

    这篇文章主要介绍了JS实现二维数组元素的排列组合运算,结合实例形式分析了javascript针对二维数组的遍历、排列组合运算等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 如何利用原生JS实时监听input框输入值

    如何利用原生JS实时监听input框输入值

    这篇文章主要介绍了如何利用原生JS实时监听input框输入值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • JS中去掉if...else的多种方法

    JS中去掉if...else的多种方法

    在JavaScript编程中,过多的if...elseif...else语句可能导致代码难以维护,可以通过switch语句、对象字面量、函数映射、数组或映射对象分发、提前返回以及使用数组的find方法来优化这种复杂的条件判断,提高代码的可读性和维护性,下面就来介绍一下
    2024-09-09
  • JS实现移动端上下滑动一次一屏

    JS实现移动端上下滑动一次一屏

    这篇文章主要为大家详细介绍了JS实现移动端上下滑动一次一屏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 微信小程序开发自定义tabBar实战案例(定制消息99+小红心)

    微信小程序开发自定义tabBar实战案例(定制消息99+小红心)

    一定的需求情况下无法使用小程序原生的tabbar的时候,需要自行实现一个和tabbar功能一模一样的自制组件,下面这篇文章主要给大家介绍了关于微信小程序开发自定义tabBar(定制消息99+小红心)的相关资料,需要的朋友可以参考下
    2022-12-12
  • JavaScript 另类遍历数组实现代码

    JavaScript 另类遍历数组实现代码

    JavaScript 另类遍历数组实现代码,大家可以看下。
    2009-10-10
  • js removeChild 方法深入理解

    js removeChild 方法深入理解

    下面小编就为大家带来一篇js removeChild 方法深入理解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • JS实现简单的点赞与踩功能示例

    JS实现简单的点赞与踩功能示例

    这篇文章主要介绍了JS实现简单的点赞与踩功能,涉及javascript针对页面元素动态操作相关实现技巧,需要的朋友可以参考下
    2018-12-12

最新评论