0

如果使用 highcharts 3 数据插件从表中读取值。这不是英语的问题,因为 . 用于小数点分隔符。在荷兰语中,表格使用 , 作为小数分隔符。图表不显示,因为数据插件看不到 5,5 与 5.5 相同。

这是我的 JavaScript 代码:

<!-- language: lang-js -->
$('#grafiek620').highcharts({  
  chart: {  
    type: 'bar'  
  },  
  credits: {  
    enabled: false  
  },
  data: {  
    table: document.getElementById('datatable620')  
  },  
  title: {  
    text: jQuery('#datatable620').data('labeltitle')  
  },  
  xAxis: {  
    labels: {  
      rotation: 0  
    },  
    title: {  
      text: jQuery('#datatable620').data('labelx')  
    }  
  },  
  yAxis: [{  
    min: 0,  
    title: {  
      text: jQuery('#datatable620').data('labely')  
    },  
    labels: {  
      rotation: 0  
    }  
  }, {  
    opposite: true,  
    title: {  
      text: jQuery('#datatable620').data('labelz')  
    },  
  }],  
  legend: {  
    layout: "horizontal"  
  }  
});  

我添加了一个 js 小提琴:http: //jsfiddle.net/knscs/

4

3 回答 3

0

您将不得不将这些逗号更改为句点才能正常工作。Javascript 在数字格式的文化差异方面不是很好。一个简单的string.replace应该做到这一点。

例如,使用您的示例执行此操作的一种非常便宜且实用的方法是:

$("td").each(function() {
    var str = $(this).text();
    $(this).text(str.replace(',','.'));
}); 

这会更改您的标签中的所有,内容.td但它不是很聪明,如果您的代码需要国际友好并且您的遇到数据(例如)1,000.5或者如果您有一个td包含逗号的字符串,您应该非常小心。

于 2013-07-17T13:14:19.553 回答
0

您可以简单地编辑 data.src.js 模块以允许使用逗号。编辑源有什么好处?您无需更改 HTML 中的任何内容,无需再次遍历数组的所有项目,只需找到该行(在 data.src.js 中):

floatVal = parseFloat(val);

并按照其他答案的建议使用replace()替换。,.

于 2013-07-18T12:22:20.607 回答
0

好的,您有一个解决方案:

var ConvertStringToFloat = function( datas ) {
    return datas.map(function(i, el) {
        var str = $(el).text();
        return parseFloat(str.replace(",", "."));
    });
}
ConvertStringToFloat ( $("td", $('#datatable620') ) )

这里你有一个浮点数组,现在你只需要使用 HighChart 创建一个系列。

series: [{
    data: ConvertStringToFloat ( $("td", $('#datatable620') ) )        
}]

这是一个工作示例:http: //jsfiddle.net/knscs/3/

要显示数字(以荷兰方式),您可以在以下选项中执行此操作Highcharts

Highcharts.setOptions({
    lang: {
        decimalPoint: ','
    }
});

PS:函数的名称由您选择...我没有真正考虑过,但这ConvertStringToFloat不是一个好的选择;)

于 2013-07-17T13:48:26.520 回答