Как мы можем динамически передавать тип графика

58
3

Я пытаюсь передать тип графика динамически, выбирая параметры из списка выбора. Ниже мой код:

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

Однако я не могу получить график. Я пытаюсь выбрать вариант в качестве гистограммы, и я хочу, чтобы график был гистограммой, и если я выбираю Pie-Chart, график должен быть Pie-Chart с тем же значением.

спросил(а) 2016-08-08T12:28:00+03:00 4 года, 3 месяца назад
1
Решение
59

У вас есть ошибка в этой строке:

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

ответил(а) 2016-08-08T13:20:00+03:00 4 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема