<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ECharts</title>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:400px"></div>
<!-- ECharts单文件引入 -->
<script src="dist/echarts.min.js"></script>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById('main'));
function fetchData(cb) {
// 通过 setTimeout 模拟异步加载
setTimeout(function () {
cb({
categories: document.getElementById("myint1").value.split(","),
data: document.getElementById("myint2").value.split(",")
});
}, 1000);
}
// 初始 option
option = {
title: {
text: '异步数据加载示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: []
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: []
}]
};
fetchData(function (data) {
myChart.setOption({
xAxis: {
data: data.categories
},
series: [{
// 根据名字对应到相应的系列
name: '销量',
data: data.data
}]
});
});
myChart.setOption(option);
</script>
<form>
请输入横坐标数据,以英文","作为间隔:
<br>
<input type='text' id='myint1' value="0"/>
<br>
请输入纵坐标数据,以英文","作为开头和间隔,不同类目数据以英文";"作为间隔:
<br>
<input type='text' id='myint2' value="0" />
<input type="button" value="确认" onclick="fetchData()">
</form>
</body>
</html>
5 个解决方案
#1
你这样写的我没试过,不知道对不对。我跟你写的差不多,就是格式不太一样,我用的时候大概是这样的:
假如你要改xAxis, option.xAxis[0].data = 获取的值,
假如是series, option.series[0].data = 获取的值 ,
就是赋值给你要改变的那个参数,
然后再myChart.setOption(option)
假如你要改xAxis, option.xAxis[0].data = 获取的值,
假如是series, option.series[0].data = 获取的值 ,
就是赋值给你要改变的那个参数,
然后再myChart.setOption(option)
#2
自己鼓捣出来了。。这是最终的代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ECharts</title>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:400px"></div>
<!-- ECharts单文件引入 -->
<script src="dist/echarts.min.js"></script>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById('main'));
// 初始 option
option = {
title: {
text: '异步数据加载示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: []
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: []
}]
};
function tt1(){
function fetchData(cb) {
// 通过 setTimeout 模拟异步加载
setTimeout(function () {
cb({
categories: document.getElementById("myint1").value.split(","),
data: document.getElementById("myint2").value.split(",")
});
}, 1000);
}
fetchData(function (data) {
myChart.setOption({
xAxis: {
data: data.categories
},
series: [{
// 根据名字对应到相应的系列
name: '销量',
data: data.data
}]
});
});
myChart.setOption(option);
}
myChart.setOption(option);
</script>
<form>
请输入横坐标数据,以英文","作为间隔:
<br>
<input type='text' id='myint1' value="衬衫,羊毛衫,雪纺衫,裤子,高跟鞋,袜子"/>
<br>
请输入纵坐标数据,以英文","作为开头和间隔,不同类目数据以英文";"作为间隔:
<br>
<input type='text' id='myint2' value="5, 20, 36, 10, 10, 20"/>
<input type="button" value="确认" onclick="tt1()">
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ECharts</title>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:400px"></div>
<!-- ECharts单文件引入 -->
<script src="dist/echarts.min.js"></script>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById('main'));
// 初始 option
option = {
title: {
text: '异步数据加载示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: []
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: []
}]
};
function tt1(){
function fetchData(cb) {
// 通过 setTimeout 模拟异步加载
setTimeout(function () {
cb({
categories: document.getElementById("myint1").value.split(","),
data: document.getElementById("myint2").value.split(",")
});
}, 1000);
}
fetchData(function (data) {
myChart.setOption({
xAxis: {
data: data.categories
},
series: [{
// 根据名字对应到相应的系列
name: '销量',
data: data.data
}]
});
});
myChart.setOption(option);
}
myChart.setOption(option);
</script>
<form>
请输入横坐标数据,以英文","作为间隔:
<br>
<input type='text' id='myint1' value="衬衫,羊毛衫,雪纺衫,裤子,高跟鞋,袜子"/>
<br>
请输入纵坐标数据,以英文","作为开头和间隔,不同类目数据以英文";"作为间隔:
<br>
<input type='text' id='myint2' value="5, 20, 36, 10, 10, 20"/>
<input type="button" value="确认" onclick="tt1()">
</form>
</body>
</html>
#3
给myChart重新赋值文本框输入的值实现刷新效果
#4
收藏了,非常感谢
#5
注意,你用了这种操作之后最好调用myChart.clear();然后再myChart.setOption(option);要不然有可能会出现极其恶心的BUG
#1
你这样写的我没试过,不知道对不对。我跟你写的差不多,就是格式不太一样,我用的时候大概是这样的:
假如你要改xAxis, option.xAxis[0].data = 获取的值,
假如是series, option.series[0].data = 获取的值 ,
就是赋值给你要改变的那个参数,
然后再myChart.setOption(option)
假如你要改xAxis, option.xAxis[0].data = 获取的值,
假如是series, option.series[0].data = 获取的值 ,
就是赋值给你要改变的那个参数,
然后再myChart.setOption(option)
#2
自己鼓捣出来了。。这是最终的代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ECharts</title>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:400px"></div>
<!-- ECharts单文件引入 -->
<script src="dist/echarts.min.js"></script>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById('main'));
// 初始 option
option = {
title: {
text: '异步数据加载示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: []
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: []
}]
};
function tt1(){
function fetchData(cb) {
// 通过 setTimeout 模拟异步加载
setTimeout(function () {
cb({
categories: document.getElementById("myint1").value.split(","),
data: document.getElementById("myint2").value.split(",")
});
}, 1000);
}
fetchData(function (data) {
myChart.setOption({
xAxis: {
data: data.categories
},
series: [{
// 根据名字对应到相应的系列
name: '销量',
data: data.data
}]
});
});
myChart.setOption(option);
}
myChart.setOption(option);
</script>
<form>
请输入横坐标数据,以英文","作为间隔:
<br>
<input type='text' id='myint1' value="衬衫,羊毛衫,雪纺衫,裤子,高跟鞋,袜子"/>
<br>
请输入纵坐标数据,以英文","作为开头和间隔,不同类目数据以英文";"作为间隔:
<br>
<input type='text' id='myint2' value="5, 20, 36, 10, 10, 20"/>
<input type="button" value="确认" onclick="tt1()">
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ECharts</title>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:400px"></div>
<!-- ECharts单文件引入 -->
<script src="dist/echarts.min.js"></script>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById('main'));
// 初始 option
option = {
title: {
text: '异步数据加载示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: []
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: []
}]
};
function tt1(){
function fetchData(cb) {
// 通过 setTimeout 模拟异步加载
setTimeout(function () {
cb({
categories: document.getElementById("myint1").value.split(","),
data: document.getElementById("myint2").value.split(",")
});
}, 1000);
}
fetchData(function (data) {
myChart.setOption({
xAxis: {
data: data.categories
},
series: [{
// 根据名字对应到相应的系列
name: '销量',
data: data.data
}]
});
});
myChart.setOption(option);
}
myChart.setOption(option);
</script>
<form>
请输入横坐标数据,以英文","作为间隔:
<br>
<input type='text' id='myint1' value="衬衫,羊毛衫,雪纺衫,裤子,高跟鞋,袜子"/>
<br>
请输入纵坐标数据,以英文","作为开头和间隔,不同类目数据以英文";"作为间隔:
<br>
<input type='text' id='myint2' value="5, 20, 36, 10, 10, 20"/>
<input type="button" value="确认" onclick="tt1()">
</form>
</body>
</html>
#3
给myChart重新赋值文本框输入的值实现刷新效果
#4
收藏了,非常感谢
#5
注意,你用了这种操作之后最好调用myChart.clear();然后再myChart.setOption(option);要不然有可能会出现极其恶心的BUG