перезаписывающая консоль.войдите в $(‘body’).добавьте

#jquery

#jquery

Вопрос:

Я получил это от Пола Айриша,

 window.log = function(){
  if(this.console){
    console.log( Array.prototype.slice.call(arguments) );
  }
};
  

Вопрос: Как это можно переписать для отображения объектов и массивов на странице вместо консоли, чтобы использовать $(‘body’).append вместо console.log?

Комментарии:

1. Сложность здесь в том, что arguments это массив значений, некоторые из которых могут быть объектами или массивами. Если массив содержит 4 значения, 2 из которых являются строками, а 2 из которых являются массивами, записываются ли строки в консоль, а массивы в тело, или это все или ничего?

Ответ №1:

 window.log = function() {
    $(document.body).append(JSON.stringify(Array().slice.call(arguments)));
};
  

Это приведет к отображению строк, массивов и объектных литералов

И исправленный, чтобы остановить появление скобок [] и добавить тег br, если вы вызываете его с несколькими аргументами, вы получите br для каждого аргумента.

 window.log = function() {
  $.each(arguments, function(i, a) {
    $(document.body).append('<br/>'   JSON.stringify(a));
  });
};
  

Комментарии:

1. Джеймс, это становится лучше, но мне нужно что-то, что говорит if (isArray(a)) {for (i=0;i<a.length;i )…

Ответ №2:

Непроверено, но это должно быть близко:

 window.log = function(){
  $(document.body).append(JSON.stringify(arguments));
};
  

Комментарии:

1. Похоже, он хочет показать объекты / массивы в теле ВМЕСТО console.log, не в том случае, когда консоль недоступна.

2. $.parseJSON преобразует строку JSON в объект — Я думаю, вы хотите обратное этому, JSON.stringify() .

3. $ (document.body) быстрее, чем $ (‘body’)? Вот почему это используется?

4. Ой, молодец, Энди. И @Philip, я не уверен, просто я всегда так это делал.