Javascript 如何动态传递图形类型

Javascript 如何动态传递图形类型,javascript,html,Javascript,Html,我试图通过从选择列表中选择选项来动态传递图形类型。下面是我的代码: <html> <head> </head> <body> <select id="ChartType" name="ChartType" onchange="drawChart()"> <option value = "0">Select Chart Type <option value="PieChart"

我试图通过从选择列表中选择选项来动态传递图形类型。下面是我的代码:

<html>
  <head>
  </head>
  <body>
    <select id="ChartType" name="ChartType" onchange="drawChart()">
      <option value = "0">Select Chart Type
      <option value="PieChart">PieChart
      <option value="Histogram">Histogram
      <option value="LineChart">LineChart
      <option value="BarChart">BarChart
    </select>
    <div id="chart_div" style="border: solid 2px #000000;" ></div>
    <p id="demo"></p>
    <p id="demo1"></p>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
    // Load the Visualization API and the piechart package.
    google.load('visualization', '1.0', {'packages':['corechart']});
    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);
    // Callback that creates and populates a data table,
    // instantiates the pie chart, passes in the data and
    // draws it.      
    function drawChart() {
        // Create the data table.
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Topping');    
        data.addColumn('number', 'Slices');
        data.addRows([
          ['Mushrooms', 3],
          ['Onions', 4],
          ['Olives', 1],
          ['Zucchini', 5],
          ['Pepperoni', 2]
        ]);         
        var a = document.getElementById("ChartType").value;
        document.getElementById("demo1").innerHTML = "You selected: " + a;  
        // Set chart options
        var options = {
            'title':'How Much Pizza I Ate Last Night',
            'width':400,
            'height':300
        };             
        // Instantiate and draw our chart, passing in some options.
        //passing the value which I am reading after selecting the options from the select.
        var chart = new google.visualization.document.getElementById("ChartType").value(document.getElementById('chart_div'));
        chart.draw(data, options);
    }
    </script>
  </body>
</html>

选择图表类型
皮查特
直方图
线条图
棒形图

//加载可视化API和piechart包。 load('visualization','1.0',{'packages':['corechart']}); //将回调设置为在加载Google Visualization API时运行。 setOnLoadCallback(drawChart); //创建并填充数据表的回调, //实例化饼图,传入数据并 //画它。 函数绘图图(){ //创建数据表。 var data=new google.visualization.DataTable(); data.addColumn('string','Topping'); data.addColumn('number','Slices'); data.addRows([ [‘蘑菇’,3], [‘洋葱’,4], [Olives',1], [‘西葫芦’,5], [意大利香肠,2] ]); var a=document.getElementById(“ChartType”).value; document.getElementById(“demo1”).innerHTML=“您选择:”+a; //设置图表选项 变量选项={ 标题:“我昨晚吃了多少比萨饼”, “宽度”:400, ‘高度’:300 }; //实例化并绘制图表,传入一些选项。 //传递从“选择”菜单中选择选项后读取的值。 var chart=new google.visualization.document.getElementById(“ChartType”).value(document.getElementById(“chart_div”)); 图表绘制(数据、选项); }

然而,我无法得到图表。我正在尝试选择直方图选项,我希望图表是直方图,如果我选择饼图,图表应该是具有相同值的饼图

您在这一行有一个错误:

var chart = new google.visualization.document.getElementById("ChartType").value(document.getElementById('chart_div'));
应该是:

var chart = new google.visualization[document.getElementById("ChartType").value](document.getElementById('chart_div'));
要将字符串用作键,必须使用
[]
。原因如下:

var a = "someProperty";
var myObject = {
  someProperty: 3,
  a: 4
};

console.log(myObject.a); // 4
console.log(myObject[a]); // 3
console.log(myObject.someProperty); // 3
console.log(myObject["someProperty"]); // 3

这很有效。。。我不知道你的问题到底在哪里。。。你能试着把它分解成一个最小的工作示例吗?或者像这样,如果你想在html中使用
onchange
属性,而不是通过脚本添加事件侦听器。嗨,Simon,这里我需要的是,当我从选择列表中选择不同的图形类型时,我的图形将发生变化。e、 g:如果我选择了折线图选项,那么应该会出现折线图。如果我选择了饼图,则饼图图形不应显示在折线图上。按
F12
打开开发人员工具,并刷新页面。你有错误吗?有。我收到一个错误,声明“未捕获类型错误:无法读取未定义的属性'getElementById'。甚至我也尝试过传递变量a,但没有用。谢谢@cdrini。现在我明白我的错误是什么了。