我需要将 highcharts选项转换为 JSON字符串。我真的很挣扎。
因为它有循环结构。
好吧,我也尝试用douglascrockford cycle.js去除它:https://github.com/douglascrockford/JSON-js
如果我尝试去除它,我会得到这个堆栈跟踪
'Attr.ownerElement' is deprecated and has been removed from DOM4 (http://w3.org/tr/dom). cycle.js:92
'Attr.textContent' is deprecated. Please use 'value' instead. cycle.js:92
'Attr.nodeValue' is deprecated. Please use 'value' instead. cycle.js:92
'HTMLHtmlElement.manifest' is deprecated. The manifest attribute only has an effect during the early stages of document load. cycle.js:92
InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('checkbox') does not support selection.
我需要这个,因为我想保存我的图表的配置,然后使用该配置加载它。
有没有办法做到这一点?
由于
答案 0 :(得分:3)
问题是$('#container').highcharts(options);
向您的对象添加了一个renderTo
元素,这是一个DOM元素。在添加之前,您没有循环结构。而且,如果您真的想要保存配置选项以便再次使用,那么将它们呈现的DOM元素保存到此时并不适合您。
我建议在创建图表之前保存json:
$(function () {
var options = {
chart: {
marginRight: 120
},
legend: {
align: 'right',
verticalAlign: 'top',
x: 0,
y: 100
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
};
jsonstring = JSON.stringify(options);
$('#container').highcharts(JSON.parse(jsonstring)); // just to prove it works, obviously you would use the options variable here
});
但是,如果这不是一个选项,您可以使用JSON.stringify
replacer
选项排除您不想要的选项对象部分。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_native_JSON#The_replacer_parameter