Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一个页面上显示多个google可视化表_Javascript_Php_Jquery_Google Visualization - Fatal编程技术网

Javascript 在一个页面上显示多个google可视化表

Javascript 在一个页面上显示多个google可视化表,javascript,php,jquery,google-visualization,Javascript,Php,Jquery,Google Visualization,我在一个页面上创建多个google可视化表时遇到问题。如何在一个具有完整功能的页面上动态生成未知数量的google可视化表 我引用了这个(几乎相同的)问题以寻求帮助,但是如果您在创建页面之前还不知道表的数量,Dominor Novus的解决方案就没有帮助。例如,有时我需要5张桌子,有时我只需要1张 我的问题是如何动态创建一个页面,动态创建多个google可视化表,每个表都有自己的唯一标识符。然后,当用户单击表中的一行时,是否能够返回动态创建的表的行号和唯一标识符?为了有效地提出问题的解决方案,我

我在一个页面上创建多个google可视化表时遇到问题。如何在一个具有完整功能的页面上动态生成未知数量的google可视化表

我引用了这个(几乎相同的)问题以寻求帮助,但是如果您在创建页面之前还不知道表的数量,Dominor Novus的解决方案就没有帮助。例如,有时我需要5张桌子,有时我只需要1张


我的问题是如何动态创建一个页面,动态创建多个google可视化表,每个表都有自己的唯一标识符。然后,当用户单击表中的一行时,是否能够返回动态创建的表的行号和唯一标识符?

为了有效地提出问题的解决方案,我们必须将表数据和表对象存储在数组中。我们首先在页面顶部为数据和表对象创建数组

var tableData=new Array();
var table=new Array();
var tableid=0;
然后,我们生成表,将它们存储在由唯一标识符引用的数组中。然后,为了实现表的select功能,我们向表对象添加了一个侦听器。然后,我们获取表的包含div的id,并获取该id的子字符串以发现刚刚单击的表。然后,我们使用方法.getSelection()获取该表的行。一旦我们有了行和表id,我们就可以根据用户单击的表和行将它们返回给用户

//create dynamic number of tables
for (id=0;id<num_of_tables;id++) {
    var tableID = 'table_div' + id; //The id of the google visualization table

    //Generate the div for the google visualization table
    $('<div/>', {
        id: tableID,
        class: 'cd_table'
    }).appendTo('#tables');

    listData = data;

    if (listData[id].length>0) {
        tableData[id] = new google.visualization.DataTable();

        tableData[id].addColumn('string', 'name');
        tableData[id].addColumn('string', 'email');

        for (var i=0; i<listData[id].length; i++) {
            tableData[id].addRows(1);           
            tableData[id].setCell(i,0,listData[id][i].name);
            tableData[id].setCell(i,1,listData[id][i].email);
        }
    }

    table[id] = new google.visualization.Table(document.getElementById(tableID));
    table[id].draw(tableData[id], {showRowNumber: false, sortColumn: 0});

    google.visualization.events.addListener(table[id], 'select', function() {
        $(document).on('mousemove', '.google-visualization-table', function() { 
           tableid=$(this).closest('.cd_table').attr('id').substring(9);
        });

        var row;
        if (table[tableid].getSelection()[0] != undefined) {
            row = table[tableid].getSelection()[0].row;
            lastRowClick = row;
        } else row = lastRowClick;
        alert('table id:' + tableid + ' row:' + row);
    });
}

完成了。您可以创建无限数量的动态生成的google可视化表,这些表可以返回单击的行和单击的表的id。

我尝试了类似的方法,但结果不一致,例如有时会显示多个图表,有时则不会(看似随机)。不过也许我可以再看一眼,试试mousemove的监听技巧。我最终只是使用了另一个库。谢谢@阿沃利娃,你最后用的是哪一个图书馆?我最后跟查特一起去了
$(document).on('mousemove', '.google-visualization-table', function() { 
    tableid=$(this).closest('.cd_table').attr('id').substring(9);
});