用echarts画了个图,然后应该怎么通过文本框输入值的改变,改变图表呢?

时间:2022-11-18 10:44:15
<!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')); 
    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)

#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>

#3


给myChart重新赋值文本框输入的值实现刷新效果

#4


引用 2 楼 qq_34835301 的回复:
自己鼓捣出来了。。这是最终的代码



<!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">    


收藏了,非常感谢

#5


注意,你用了这种操作之后最好调用myChart.clear();然后再myChart.setOption(option);要不然有可能会出现极其恶心的BUG

#1


你这样写的我没试过,不知道对不对。我跟你写的差不多,就是格式不太一样,我用的时候大概是这样的:
假如你要改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>

#3


给myChart重新赋值文本框输入的值实现刷新效果

#4


引用 2 楼 qq_34835301 的回复:
自己鼓捣出来了。。这是最终的代码



<!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">    


收藏了,非常感谢

#5


注意,你用了这种操作之后最好调用myChart.clear();然后再myChart.setOption(option);要不然有可能会出现极其恶心的BUG