2011-10-27 12 views
33

He intentado usar console.log para poder ver el contenido de mi matriz que contiene varios objetos. Sin embargo, me sale un error diciendo console.log no es un objeto, etc. Im usando jQuery 1.6.2 y mi matriz es la siguiente:console.log que muestra los contenidos del objeto de matriz

filters = {dvals:[{'brand':'1', 'count':'1'}, 
        {'brand':'2', 'count':'2'}, 
        {'brand':'3', 'count':'3'}]} 

console.log(filters); 

Lo que quiero hacer es escribir el contenido de la matriz (filtros) a un cuadro de alerta (eso es lo que pensé que hizo console.log) en el formato de filtros. ¿Cómo puedo hacer eso?

+7

¿Qué navegador está utilizando? El objeto 'console' solo está disponible en ciertos navegadores o complementos – Phil

+0

¿Qué navegador estás usando? – chustar

+0

funciona para mí: http://jsfiddle.net/PxZjr/ –

Respuesta

7

console.log no genera ningún cuadro de mensaje. No creo que esté disponible en ninguna versión de IE (ni Firefox) sin la adición de Firebug o algún equivalente.

Sin embargo, está disponible en Safari y Chrome. Como mencionas Chrome, lo usaré para mi ejemplo.

Tendrá que abrir su ventana y su contraparte de la ventana del desarrollador. puede hacer esto haciendo clic derecho en cualquier elemento de la página y seleccionando "Inspeccionar elemento". su ventana se dividirá en dos partes, la parte del desarrollador será la inferior. en la división entre las dos partes hay una barra con botones y el botón de la derecha está etiquetado como "consola". Tendrá que hacer clic para cambiar a la pestaña de la consola. Lamentablemente, no sé cómo llegar al teclado en Chrome. (En Safari en Mac OS X es comando + shift + I)

Una vez allí, podrá interactuar con cualquier página que esté cargada en la parte superior a través de javascript desde esa consola, y todos los mensajes que console.log se mostrarán allí.

+0

Deberá (instalar y) activar el depurador de IE Developer Tools. Simplemente vaya a la página web para depurar y presione el botón F12 para activar el depurador. Esto define la consola que usas en tu código. – GuruM

+0

@GuruM: Esto no solo escribirá el objeto y no el contenido del objeto como lo hace en Firefox o Chrome. –

+0

@NeilKnight. El que pregunta puede usar las técnicas especificadas en otra parte de esta página para buscarlo. Solo le estaba informando cómo podría activar el depurador de IE. Kris no había mencionado cómo abrir el depurador en IE, así que solo llena el vacío. – GuruM

1

Parece que Firebug o cualquier depurador que esté utilizando, no se inicializó correctamente. ¿Estás seguro de que Firebug está completamente inicializado cuando intentas acceder al método console.log() -? Verifique la Consola-Pestaña (si está configurada para activarse).

Otra posibilidad podría ser que sobrescriba el objeto de la consola en cualquier lugar del código.

+0

Estoy usando cosole.log en IE8 y google chrome No obtengo ningún resultado, es alguna configuración en el navegador que uso. – ONYX

+0

@KDM - los mensajes de console.log aparecerán en la ventana del lado derecho de la "Consola" para la pestaña "Secuencia de comandos" en el depurador de IE Developer Tools. Debe visitar la página web que se va a depurar, presionar la tecla F12 para activar el depurador. Seleccione "Iniciar depuración" y luego elija la pestaña "Guión". Ejecute la secuencia de comandos para ver los mensajes de registro en la ventana "Consola". – GuruM

1

Json significa Notación de objetos JavaScript realmente todos los json son objetos javascript, por lo que su matriz ya está en formato json. Para escribirlo en un div que podría hacer un montón de cosas que uno de los más fáciles, creo que sería:

objectDiv.innerHTML = filter; 

donde objectDiv es el div que desea seleccionado en el DOM utilizando jQuery. Si quería lista de piezas de la matriz a cabo se podía acceder a ellos, ya que es un objeto de JavaScript, así:

objectDiv.innerHTML = filter.dvals.valueToDisplay; //brand or count depending. 

edición: todo lo que quiere ser una cadena, pero no está en (lo cual es raro trata javascript casi todo como una cadena) simplemente use la función toString() incorporada. Entonces la línea anterior si la necesita sería filter.dvals.valueToDisplay.toString();

segunda edición para aclarar: esta respuesta es en respuesta a los comentarios del OP y no completamente a su pregunta original.

4

El objeto console está disponible en Internet Explorer 8 o más nuevo, pero sólo si se abre la ventana de Herramientas de Desarrollo pulsando F12 oa través del menú.

Se mantiene disponible incluso si cierra la ventana Herramientas del desarrollador nuevamente hasta que cierre su IE.

Chorme y Opera siempre tienen disponible console, al menos en las versiones actuales. Firefox tiene un console cuando se usa Firebug, pero también puede proporcionar uno sin Firebug.

En cualquier caso, es un método de salvar para hacer que el uso de la salida console sea opcional. Aquí hay algunos ejemplos sobre cómo hacerlo:

if (console) { 
    console.log('Hello World!'); 
} 

if (console) console.debug('value of someVar: ' + someVar); 
41

existen dos posibles soluciones simples para volcar una matriz como cadena. Dependiendo del entorno que esté utilizando:

... con los navegadores modernos usan JSON:

JSON.stringify(filters); 
// returns this 
"{"dvals":[{"brand":"1","count":"1"},{"brand":"2","count":"2"},{"brand":"3","count":"3"}]}" 

... con algo como Node.js puede utilizar console.info()

console.info(filters); 
// will output: 
{ dvals: 
[ { brand: '1', count: '1' }, 
    { brand: '2', count: '2' }, 
    { brand: '3', count: '3' } ] } 

Editar:

JSON.stringify viene con dos más parámetros opcionales El tercer parámetro "espacios" permite bastante impresión:

JSON.stringify(
       obj,  // the object to stringify 
       replacer, // a function or array transforming the result 
       spaces // prettyprint indentation spaces 
      ) 

ejemplo:

JSON.stringify(filters, null, " "); 
// returns this 
"{ 
"dvals": [ 
    { 
    "brand": "1", 
    "count": "1" 
    }, 
    { 
    "brand": "2", 
    "count": "2" 
    }, 
    { 
    "brand": "3", 
    "count": "3" 
    } 
] 
}" 
+0

Propongo que alguien lo corrige en una versión futura de Javascript y hace que los objetos se conviertan automáticamente a una representación de cadena sensible de forma predeterminada. Probablemente nadie quiere ver Objeto [Objeto]. – osa

1

calurosa recomiendo este fragmento de asegurar, trozos de código que quedan accidentalmente no fallan en los clientes navegadores:

/* neutralize absence of firebug */ 
if ((typeof console) !== 'object' || (typeof console.info) !== 'function') { 
    window.console = {}; 
    window.console.info = window.console.log = window.console.warn = function(msg) {}; 
    window.console.trace = window.console.error = window.console.assert = function(msg) {}; 
} 

en lugar de definir una función vacía, este fragmento también es un buen punto de partida para hacer rodar su propio sustituto de la consola si es necesario, es decir, descargar esas informaciones en un contenedor .debug, mostrar alertas (podría obtener plenty) o such ...

Si usa firefox + firebug, console.dir() es mejor para volcar la matriz de salida, see here.

1

Es simple imprimir un objeto a la consola en Javascript. Sólo tiene que utilizar la siguiente sintaxis:

console.log(object); 

o

console.log('object: %O', object); 

Creo que es importante decir que este tipo de declaraciones de registro sólo funciona dentro de un entorno de navegador. Lo usé con Google Chrome. Puede ver el resultado de sus llamadas a console.log dentro de Developer Console: ábralo haciendo clic con el botón derecho en cualquier elemento de la página web y seleccione 'Inspeccionar'. Seleccione la pestaña 'Consola'.

Cuestiones relacionadas