[Javascript] equivalent du print_r ou du var_

Résolu/Fermé
Yorundr Messages postés 289 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 11 juin 2012 - 24 avril 2007 à 17:46
 lasgarde - 3 janv. 2012 à 12:35
Bonjour ,
j'aurais aimait savoir si il existait un equivalent en javascript du print_r ou du var_dump du php .
Merci

2 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
24 avril 2007 à 17:48
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
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
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