4

私が使用する場合:

chart.getChart().getSelection()[0]

チャート(チャートラッパーから、したがって最初にgetChart())では、getSelection()関数は行プロパティのみを返し、列プロパティは返しませんが、「チャート」はテーブルであり、その中のどこかをクリックすると両方の行が返されますおよび列のプロパティ。

これは Google チャートの既知のバグですか? 誰かが回避策を知っていますか?

また、Google グループでこのトピックを見つけました: https://groups.google.com/forum/#!topic/google-visualization-api/O_t7-s96A9w

現在、Table オブジェクトは行選択のみをサポートしているため、列プロパティは常に未定義です。これが重要な場合は、各セルのフォーマットされた値に特別な html コードを追加することで、これらのイベントを自分でキャッチできます。

これを行う方法を知っている人はいますか?

4

2 に答える 2

2

行選択のみをサポートしていgoogle.visualization.tableますが (列プロパティが null を返す理由を説明しています)、列プロパティにアクセスするには次の方法を検討できます。

google.load('visualization', '1', {
    packages: ['table']
});
google.setOnLoadCallback(drawTable);

function drawTable() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Name');
    data.addColumn('number', 'Salary');
    data.addColumn('boolean', 'Full Time Employee');
    data.addRows([
      ['Mike', {
          v: 10000,
          f: '$10,000'
      },
        true
      ],
      ['Jim', {
          v: 8000,
          f: '$8,000'
      },
        false
      ],
      ['Alice', {
          v: 12500,
          f: '$12,500'
      },
        true
      ],
      ['Bob', {
          v: 7000,
          f: '$7,000'
      },
        true
      ]
    ]);

    var table = new google.visualization.Table(document.getElementById('table_div'));
    google.visualization.events.addListener(table, 'select', function(){
        selectHandler(table);
    });
    table.draw(data, {
        showRowNumber: false
    });
}



function selectHandler(table) {
  var selection = table.getSelection();
  if(selection.length === 0)
      return;

  var e = event || window.event;
  var cell = e.target; //get selected cell
 
  document.getElementById('output').innerHTML = "Row: " +  selection[0].row + " Column: " +  cell.cellIndex;

}
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<div id="table_div"></div>
<div id="output"></div>

于 2015-10-30T22:09:47.083 に答える