我显示的Google图表是根据从单选按钮选择中选择的数据构建的。思考过程中,我有一个存储所选信息的数组,并使用多个选项吐出文本。我的Google图表旨在显示有多少人选择了特定商品。我构建了另一个数组来存储图表的数据,但它没有填充。在这个例子中,它的一个字符类和图表用于显示有多少人选择了特定的类。
如果你想看看我的意思,这是项目的github链接:https://keonei.github.io/todo-charts/index.html
剪辑无线电选择:
<p><span class="h2-class">Class</span></p>
<label for="cleric">
<input type="radio" id="cleric" name="memberClass"
</label>
<label for="paladin">
<input type="radio" id="paladin" name="memberClass"
value="Paladin">Paladin
</label>
<label for="rogue">
<input type="radio" id="rogue" name="memberClass"
value="Rogue">Rogue
</label>
<label for="ranger">
<input type="radio" id="ranger" name="memberClass"
value="Ranger">Ranger
</label>
<label for="fighter">
<input type="radio" id="fighter" name="memberClass"
value="Fighter">Fighter
</label>
<label for="wizard">
<input type="radio" id="wizard" name="memberClass" value="Wizard">Wizard
</label>
JS:
var classes = [
"Paladin",
"Cleric",
"Ranger",
"Rogue",
"Fighter",
"Wizard"
];
window.onload = function() {
function buildChart(tasks) {
var dataChart = [];
for (var x = 0; x < classes.length; x++){
dataChart.push(0);
}
// loop through and get data for the tasks array
for (var i = 0; i < tasks.length; i++) {
dataChart[tasks[i].members]++;
}
// build the array for our chart
var rows = new Array ();
for (var y = 0; y < dataChart.length; y++) {
rows.push( [classes[y], dataChart[y]] );
}
console.log(rows);
// Load the Visualization API and the corechart package.
google.charts.load (
'current',
{'packages': ['corechart']
});
// Set a callback to run when the Google Visualization API is
loaded.
google.charts.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', 'Class');
data.addColumn('number', 'Chosen');
data.addRows(rows);
// Set chart options
var options = {
title:'Chosen',
hAxis: {
title: 'Whats in play'
},
vAxis: {
title: 'Class'
}
};
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.ColumnChart (
document.getElementById('chart_div'));
chart.draw(data, options);
};
}
// create an object array for our selections
var tasks = {
members: [
]};
// creates the unordered list for output
function formData () {
var teamList = document.getElementById("team-list")
// reset the page - not working ask why
// document.getElementsByTagName("form").reset();
var ul = document.createElement("ul")
for(var i = 0; i < tasks.members.length; i++) {
console.log(tasks.members[i])
var li = document.createElement("li");
li.innerHTML = tasks.members[i]
// append the li to the ul elements
ul.appendChild(li)
}
// append the ul to the parent div
teamList.appendChild(ul)
buildChart(tasks);
}
document.forms["letsPlay"].onsubmit = addList;
function addList () {
event.preventDefault();
// locate form section and find our values
// lets use querySelector since there is only one form
var form = document.forms["letsPlay"];
var selection = form["memberClass"].value;
console.log(selection);
// our task in this case is player selection for our team, input
our values
var taskMember = form.teamMember.value + "\xa0has chosen to be
the\xa0" + form.memberClass.value + "\xa0for your party and has
requested difficulty\xa0" +
document.getElementById("difficulty").value;
// push selection to our array
tasks.members.push(taskMember);
formData();
form.reset();
}
}