#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, я не уверен, просто я всегда так это делал.