2011-10-27 8 views
33

Ho provato a utilizzare console.log in modo da poter vedere il contenuto dell'array che contiene più oggetti. Tuttavia ottengo un errore dicendo console.log non è un oggetto ecc Im utilizzando jQuery 1.6.2 e la mia matrice è simile a questo:console.log che mostra il contenuto dell'oggetto array

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

console.log(filters); 

Quello che voglio fare è scrivere i contenuti della matrice (filtri) in una finestra di avviso (questo è ciò che pensavo console.log ha fatto) nel formato dei filtri. Come lo faccio?

+7

Che browser stai usando? L'oggetto 'console' è disponibile solo su determinati browser o componenti aggiuntivi – Phil

+0

Che browser stai utilizzando? – chustar

+0

funziona per me: http://jsfiddle.net/PxZjr/ –

risposta

7

console.log non produce alcuna finestra di messaggio. Non penso sia disponibile in nessuna versione di IE (né di Firefox) senza l'aggiunta di firebug o qualche equivalente.

È tuttavia disponibile in Safari e Chrome. Dal momento che parli di Chrome, lo userò per il mio esempio.

Avrai bisogno di aprire la tua finestra e la sua controparte finestra sviluppatore. puoi farlo facendo clic con il tasto destro su qualsiasi elemento della pagina e selezionando "Ispeziona elemento". la tua finestra sarà divisa in due parti, la parte sviluppatore sarà la parte inferiore. nella divisione tra le due parti c'è una barra con i pulsanti e il pulsante più a destra è etichettato come "console". Dovrai fare clic su questo per passare alla scheda della console. Sfortunatamente, non so come arrivarci con la tastiera in chrome. (In Safari su Mac OS X è comando + MAIUSC + I)

Una volta lì, sarete in grado di interagire con qualunque pagina sia caricata in cima tramite javascript da quella console, e tutti i messaggi che voi console.log verranno visualizzati lì.

+0

Avrai bisogno di (installare e) attivare il debugger degli strumenti di sviluppo di IE. Basta andare alla pagina Web per eseguire il debug e premere il tasto F12 per attivare il debugger. Questo definisce la console cosa si utilizza nel codice. – GuruM

+0

@GuruM: Questo non scriverà solo l'oggetto e non il contenuto dell'oggetto come fa in FireFox o Chrome. –

+0

@NeilKnight. L'interrogante può utilizzare le tecniche specificate altrove in questa pagina per verificarlo. Stavo solo informandolo su come poteva attivare il debugger di IE. Kris non aveva menzionato come aprire il debugger in IE, quindi basta colmare il vuoto. – GuruM

1

Sembra che Firebug o qualsiasi altro debugger in uso, non sia inizializzato correttamente. Sei sicuro che Firebug sia completamente inizializzato quando provi ad accedere al console.log() - metodo? Controlla la scheda della console (se è impostata su attivata).

Un'altra possibilità potrebbe essere quella di sovrascrivere la console: oggetto in qualsiasi punto del codice.

+0

Im utilizzando cosole.log in IE8 e google chrome Im non ottenere alcun risultato è qualche impostazione nel browser che uso. – ONYX

+0

@KDM - i messaggi console.log appariranno nella finestra di destra della "Console" per la scheda "Script" nel debugger degli strumenti di sviluppo di IE. È necessario visitare la pagina Web per il debug, premere il tasto F12 per attivare il debugger. Seleziona "Avvia debug" e quindi scegli la linguetta "Script". Esegui lo script per vedere i messaggi di log nella finestra "Console". – GuruM

1

Json è l'acronimo di JavaScript Object Notation in realtà tutti i json sono oggetti javascript in modo che l'array sia già in forma json. Per scriverlo in un div si potrebbe fare un sacco di cose uno dei più facili credo sarebbe:

objectDiv.innerHTML = filter; 

dove objectDiv è il div si desidera selezionato dal DOM utilizzando jQuery. Se si voleva elencare parti dell'array fuori si poteva accedervi in ​​quanto si tratta di un oggetto JavaScript in questo modo:

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

edit: tutto ciò che si vuole essere una stringa, ma non è attualmente (il che è raro tratta javascript quasi tutto come una stringa) basta usare la funzione toString() costruito in modo da linea di cui sopra se si ha bisogno sarebbe filter.dvals.valueToDisplay.toString();

seconda modifica per chiarire:. questa risposta è in risposta alle osservazioni del PO e non completamente alla sua domanda iniziale.

4

L'oggetto console è disponibile in Internet Explorer 8 o più recente, ma solo se si apre la finestra Developer Tools premendo F12 o tramite il menu.

Rimane disponibile anche se si chiude nuovamente la finestra degli Strumenti per gli sviluppatori finché non si chiude l'IE.

Chorme e Opera hanno sempre uno console disponibile, almeno nelle versioni correnti. Firefox ha un console quando si usa Firebug, ma può anche fornirne uno senza Firebug.

In ogni caso è un approccio di salvataggio per rendere opzionale l'uso dell'uscita console. Ecco alcuni esempi su come farlo:

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

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

ci sono due potenziali semplici soluzioni per scaricare un array come stringa. A seconda dell'ambiente che si sta utilizzando:

... con i browser moderni usano JSON:

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

... con qualcosa di simile node.js è possibile utilizzare console.info()

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

Modifica:

JSON.stringify viene fornito con altri due parametri opzionali. Il terzo parametro "spazi" permette abbastanza stampa:

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

esempio:

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

Propongo che qualcuno lo corregge in una versione futura di Javascript e rende gli oggetti automaticamente convertiti in una rappresentazione di stringa sensibile per impostazione predefinita. Probabilmente nessuno vuole vedere Object [Object]. – osa

1

Raccomando vivamente questo frammento di codice al fine di garantire, pezzi di codice accidentalmente lasciato non mancano sui client browser:

/* 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) {}; 
} 

piuttosto che definire una funzione vuota, questo snippet è anche un buon punto di partenza per far ruotare il proprio surrogato della console, se necessario, ovvero scaricando tali informazioni in un contenitore .debug, mostra gli avvisi (potrebbe ottenere abbondante) o simile ...

Se si utilizza firefox + firebug, console.dir() è il modo migliore per scaricare l'output dell'array, see here.

1

È semplice stampare un oggetto da console in Javascript. Basta usare la seguente sintassi:

console.log(object); 

o

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

Credo sia importante dire che questo tipo di dichiarazione di registrazione funziona solo all'interno di un ambiente browser. L'ho usato con Google Chrome. Puoi guardare l'output delle tue chiamate su console.log all'interno della Developer Console: aprilo facendo clic con il tasto destro del mouse su qualsiasi elemento della pagina Web e selezionando "Ispeziona". Seleziona la scheda 'Console'.

Problemi correlati