[Javascript] equivalent du print_r ou du var_

Résolu
Yorundr Messages postés 284 Date d'inscription   Statut Membre Dernière intervention   -  
 lasgarde -
Bonjour ,
j'aurais aimait savoir si il existait un equivalent en javascript du print_r ou du var_dump du php .
Merci
Configuration: Windows 2000
Firefox 1.5.0.11

2 réponses

  1. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    Puisque tu repose là question je vais te faciliter un peu plus la tache

    function print_r(obj) {
      win_print_r = window.open('about:blank', 'win_print_r');
      win_print_r.document.write('<html><body>');
      r_print_r(obj, win_print_r);
      win_print_r.document.write('</body></html>');
     }
    
     function r_print_r(theObj, win_print_r) {
      if(theObj.constructor == Array ||
       theObj.constructor == Object){
       if (win_print_r == null)
        win_print_r = window.open('about:blank', 'win_print_r');
       }
       for(var p in theObj){
        if(theObj[p].constructor == Array||
         theObj[p].constructor == Object){
         win_print_r.document.write("<li>["+p+"] =>"+typeof(theObj)+"</li>");
         win_print_r.document.write("<ul>")
         r_print_r(theObj[p], win_print_r);
         win_print_r.document.write("</ul>")
        } else {
         win_print_r.document.write("<li>["+p+"] =>"+theObj[p]+"</li>");
        }
       }
      win_print_r.document.write("</ul>")
     }
    

    30
    1. lasgarde
       
      Ci-dessous la fonction simplifiée

      function print_r(theObj) {    
          var win_print_r = "";   
          for(var p in theObj){  
                 var _type = typeof(theObj[p]);  
                 if( (_type.indexOf("array") >= 0) || (_type.indexOf("object") >= 0) ){  
                        win_print_r += "<li>";  
                        win_print_r += "["+_type+"] =>"+p;  
                        win_print_r += "<ul>";  
                        win_print_r += print_r(theObj[p]);  
                        win_print_r += "</ul></li>";  
               } else {  
                       win_print_r += "<li>["+p+"] =>"+theObj[p]+"</li>";  
               }  
           }  
           return win_print_r;  
      }
      0
  2. antoinelac
     
    Bonjour!

    Juste deux petites modifications par rapport à la fonction précédente :

    //Premier point :
    Il y a erreur si theObj[p] == null

    win_print_r.document.write("<li>["+p+"] =>"+theObj[p]+"</li>"); //N'aime pas les NULL -> +theObj[p]+

    //Deuxième point :
    Il y a un win_print_r.document.write("</ul>") de trop.

    Je l'ai mit en commentaire dans le code.

    [...]
    function r_print_r(theObj, win_print_r) {
    if(theObj.constructor == Array ||
    theObj.constructor == Object){
    if (win_print_r == null)
    win_print_r = window.open('about:blank', 'win_print_r');
    }
    for(var p in theObj){

    if(theObj[p].constructor == Array || theObj[p].constructor == Object) {
    win_print_r.document.write("<li>[" + p + "] =>" + typeof (theObj) + "</li>");
    win_print_r.document.write("<ul>")
    r_print_r(theObj[p], win_print_r);
    win_print_r.document.write("</ul>")
    } else {
    win_print_r.document.write("<li>[" + p + "] =>" + theObj[p] + "</li>");
    }
    [...]

    Devient :

    [...]
    function r_print_r(theObj, win_print_r) {
    if(theObj.constructor == Array ||
    theObj.constructor == Object){
    if (win_print_r == null)
    win_print_r = window.open('about:blank', 'win_print_r');
    }
    for(var p in theObj){

    if(theObj[p] == null)
    {
    theObj[p] = "NULL";
    }

    if(theObj[p].constructor == Array || theObj[p].constructor == Object) {
    win_print_r.document.write("<li>[" + p + "] =>" + typeof (theObj) + "</li>");
    win_print_r.document.write("<ul>")
    r_print_r(theObj[p], win_print_r);
    //win_print_r.document.write("</ul>")
    } else {
    win_print_r.document.write("<li>[" + p + "] =>" + theObj[p] + "</li>");
    }
    [...]
    2