获取点击栏中的月份

时间:2014-07-10 12:45:26

标签: jquery flot

当我处理图表中某个条形图中的点击时,我可以得到Y轴值,但是我想要的X轴得到月份,现在我得到一个奇怪的值。

$("#flot-dashboard-chart2").bind("plotclick", function (event, pos, item) {            
     if (item) {
          var dataPoint = item.series.data[item.dataIndex];          
          // dataPoint[0] - Return a strange value, a want the month
          // dataPoint[1] - Return the Y value (works fine)
     }
});

我的图表

 var options = {
            xaxis: {
                mode: "time",
                tickSize: [1, "month"],
                tickLength: 0,
                axisLabel: "Date",
                axisLabelUseCanvas: true,
                axisLabelFontSizePixels: 12,
                axisLabelFontFamily: 'Arial',
                axisLabelPadding: 10,
                color: "#838383",                
                timeformat: "%b/%y"
            },

2 个答案:

答案 0 :(得分:0)

如果没有提供数据和你得到的数据,我们只能猜测,所以这是我的猜测:

当您访问dataPoint [0]时,您可能会得到一个时间戳(自1970年1月1日以来的毫秒数,如下所示:1404999276000)。 在javascript中,您可以轻松地将时间戳转换为日期:

date = new Date(timestamp);

它返回如下内容:

Thu Jul 10 2014 15:34:36 GMT+0200 (Paris, Madrid (heure d’été)) 

然后,您可以使用getMonth()

提取月份
date.getMonth()  // return 6 (july, january is 0)

答案 1 :(得分:0)

我得到了它,具有以下功能。

    /* HANDLE CLICK IN BAR */
    $("#flot-dashboard-chart2").bind("plotclick", function (event, pos, item) {            
        if (item) {
            var dataPoint = item.series.data[item.dataIndex];                
            var month = GetMonth(item);               
        }
    });    

    /* GET THE MONTH IN X AXIS */
    function GetMonth(item)
    {        
        var content = "%x";
        var xPattern = /%x\.{0,1}(\d{0,})/;
        // change x from number to given label, if given
        if (typeof item.series.xaxis.ticks !== 'undefined') {

            var ticks = 'ticks';                       
            var tickIndex = item.dataIndex + item.seriesIndex;

            if (item.series.xaxis[ticks].length > tickIndex)
                content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex+1].label);
        }

        // Return Nov/14 for example
        return content;
    }