2016-07-12 14 views
1

Der Hintergrund für diese Frage ist ich versuche, die ausgewählte Zelle von AddListener in Google Visualisierung Kalender zugreifen. Ich könnte die ausgewählte Zelle mit JSON.stringify(chart.getSelection()); drucken. Es druckt als [{"date":1468195200000,"row":0}].Benötigen Sie den Zugriff auf Daten in JSON.Stringify Objekt

Mein Problem ist auf dieses Datum Objekt zugreifen. Ich habe versucht, darauf zuzugreifen als

var obj=JSON.stringify(chart.getSelection()); 
     console.log('selected value '+obj.date); 

Aber es zeigt, wie Undefined. Wenn ich die obj drucke, zeigt es als [object, object]

Wenn Sie weitere Informationen benötigen, lassen Sie es mich bitte wissen. Jeder Vorschlag wäre willkommen.

+0

eine ist Tippfehler, es wird JSON.stringify sein, aber nicht SON.stringify – brk

+1

Wenn Sie den Inhalt der Daten lesen müssen, warum konvertieren Sie es in eine Zeichenfolgendarstellung? –

+0

@ user2181397 danke, korrigierte ich. –

Antwort

4

JSON.stringify() serialisiert ein Datenobjekt in eine Zeichenfolge. Greifen Sie einfach direkt auf das Objekt zu.

var data = chart.getSelection()[0]; // assuming there is only ever one item in the selection array. 
console.log(data.date) 
+3

'Daten' ist ein Array, Sie müssen zuerst auf das richtige Array-Element zugreifen, dann die Eigenschaft –

+0

oops ... so ist es! – chardy

+0

danke für die Hilfe –

2

Versuchen Sie folgendes:

var data = [{"date":1468195200000,"row":0}] 
 

 
var rw = data[0].row; 
 
var dt = new Date(data[0].date); 
 

 
console.log(rw); 
 
console.log(dt);

+1

_ "Versuchen Sie Folgendes:" _ aber warum?"Try this" Antworten helfen nicht einem Benutzer beizubringen, was falsch ist oder was benötigt wurde, um das Problem zu beheben –

+0

Danke für die Hilfe –

+1

@PatrickEvans: worüber sprichst du? Ich habe ihm die Probe mit den richtigen Portionen gegeben, damit er/sie selbst lernen und machen kann. Er/sie muss das Problem lösen, nicht "WARUM"? Wenn er/sie "Warum" sagt, werde ich die Erklärung geben. Also, warum lehrst du ihn nicht? keine Antwort geben, nur andere Leute Antworten beschweren ... –

0

Dies ist ein Array von Objekten jedoch nur ein Objekt in diesem Array ist (oder so glaube ich) so, was Sie tun sollten, ist console.log(obj[0].date); stattdessen!

+0

danke für die Hilfe –

1

vorsichtig wenn das erste Array-Element direkt zugreifen, wenn für das 'select' Ereignis

chart.getSelection()[0]

das 'select' Ereignis ausgelöst wird, zu hören, sowohl wenn eine Auswahl getroffen wird, und entfernt

so die obige Zeile schlägt fehl, wenn die Auswahl entfernt wird

überprüfen Sie die length vor dem Zugriff auf ...

selection = chart.getSelection(); 
    // check selection length 
    if (selection.length > 0) { 
    console.log(selection[0].date); 
    } else { 
    console.log('selection removed'); 
    } 

siehe folgende Arbeits Schnipsel, wählen Sie ein Datum, dann wieder wählen Sie die Auswahl entfernen ...

google.charts.load('current', { 
 
    callback: function() { 
 
    var dataTable = new google.visualization.DataTable(); 
 
    dataTable.addColumn({ type: 'date', id: 'Date' }); 
 
    dataTable.addColumn({ type: 'number', id :'Score' }); 
 
    dataTable.addRows([ 
 
     [ new Date(2016, 3, 13), 101 ], 
 
     [ new Date(2016, 3, 14), 102 ], 
 
     [ new Date(2016, 3, 15), 103 ], 
 
     [ new Date(2016, 3, 16), 104 ], 
 
     [ new Date(2016, 3, 17), 105 ] 
 
    ]); 
 

 
    var chart = new google.visualization.Calendar(document.getElementById('chart_div')); 
 
    google.visualization.events.addListener(chart, 'select', function() { 
 
     var selection = chart.getSelection(); 
 

 
     // check selection length 
 
     if (selection.length > 0) { 
 
     console.log(selection[0].date); 
 
     } else { 
 
     console.log('selection removed'); 
 
     } 
 
    }); 
 
    chart.draw(dataTable); 
 
    }, 
 
    packages:["calendar"] 
 
});
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div id="chart_div"></div>

+0

das Kalender-Diagramm kann nie mehr als ein ausgewähltes Datum haben, hoffe, dies hilft ... – WhiteHat

+0

müssen überprüfen, Länge vor dem Zugriff auf '[0] ', oder Fehler wird ausgelöst, wenn nicht ausgewählt ... – WhiteHat

Verwandte Themen