Javascript 获取类别筛选器控件的类型
我有一个简单的GoogleVisualization仪表板,上面有以下代码Javascript 获取类别筛选器控件的类型,javascript,if-statement,getelementbyid,google-visualization,dashboard,Javascript,If Statement,Getelementbyid,Google Visualization,Dashboard,我有一个简单的GoogleVisualization仪表板,上面有以下代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="conten
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>
Google Visualization API Sample
</title>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1.1', {packages: ['controls']});
</script>
<script type="text/javascript">
function drawVisualization() {
// Prepare the data
var data = google.visualization.arrayToDataTable([
['Name', 'Gender', 'Age', 'Donuts eaten'],
['Michael' , 'Male', 12, 5],
['Elisa', 'Female', 20, 7],
['Robert', 'Male', 7, 3],
['John', 'Male', 54, 2],
['Jessica', 'Female', 22, 6],
['Aaron', 'Male', 3, 1],
['Margareth', 'Female', 42, 8],
['Miranda', 'Female', 33, 6]
]);
// Define a category picker control for the Gender column
var categoryPicker = new google.visualization.ControlWrapper({
'controlType': 'CategoryFilter',
'containerId': 'control1',
'options': {
'filterColumnLabel': 'Gender',
'ui': {
'labelStacking': 'vertical',
'allowTyping': false,
'allowMultiple': false
}
}
});
// Define a table
var table = new google.visualization.ChartWrapper({
'chartType': 'Table',
'containerId': 'chart1',
'options': {
'width': '300px'
}
});
// Create a dashboard
new google.visualization.Dashboard(document.getElementById('dashboard')).
bind(categoryPicker,table).
// Draw the entire dashboard.
draw(data);
}
google.setOnLoadCallback(drawVisualization);
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="dashboard">
<table>
<tr style='vertical-align: top'>
<td style='width: 300px; font-size: 0.9em;'>
<div id="control1"></div>
</td>
<td style='width: 600px'>
<div style="float: left;" id="chart1"></div>
</td>
</tr>
</table>
</div>
</body>
</html>
但是我无法得到正确的格式。那么,if条件下使用的正确格式是什么?
在
drawVisualization
函数外部访问categoryPicker
对象,然后使用getState()。selectedValues
值:
var categoryPicker;
function drawVisualization() {
// etc.
categoryPicker = // etc...
// Register to hear state changes.
google.visualization.events.addListener(categoryPicker, 'statechange', foo);
// etc.
}
function foo() {
// Insert your if condition here.
}
使
categoryPicker
对象可在drawVisualization
函数外部访问,然后使用getState()。selectedValues
值:
var categoryPicker;
function drawVisualization() {
// etc.
categoryPicker = // etc...
// Register to hear state changes.
google.visualization.events.addListener(categoryPicker, 'statechange', foo);
// etc.
}
function foo() {
// Insert your if condition here.
}
除了“statechange”事件处理程序外,没有办法判断控件何时发生了更改。如果您需要在控件更改时执行某些代码,您可以这样做:
google.visualization.events.addListener(control, 'statechange', function () {
var state = control.getState();
// do something with the state, eg:
var whereClauses = [];
whereClauses.push('something1 = "' + state.selectedValues[0] + '"');
// ...
});
但是,如果您希望在任何相关控件更改时执行某些代码,则可以创建一个函数并将该函数传递给事件处理程序:
function foo () {
var state1 = control1.getState();
var state2 = control2.getState();
var whereClauses = [];
whereClauses.push('something1 = "' + state1.selectedValues[0] + '"');
whereClauses.push('something2 = "' + state2.selectedValues[0] + '"');
// ...
}
// add event handlers to control1 and control2 using foo
google.visualization.events.addListener(control1, 'statechange', foo);
google.visualization.events.addListener(control2, 'statechange', foo);
如果函数需要知道更改了哪个控件,则可以执行以下操作:
function foo (control, columnName) {
var state = control.getState();
var whereClauses = [];
whereClauses.push(columnName + ' = "' + state.selectedValues[0] + '"');
// ...
}
// add event handlers to control1 and control2 using foo
google.visualization.events.addListener(control1, 'statechange', function () {
foo(control1, 'something1');
});
google.visualization.events.addListener(control2, 'statechange', function () {
foo(control2, 'something2');
});
除了“statechange”事件处理程序外,没有办法判断控件何时发生了更改。如果您需要在控件更改时执行某些代码,您可以这样做:
google.visualization.events.addListener(control, 'statechange', function () {
var state = control.getState();
// do something with the state, eg:
var whereClauses = [];
whereClauses.push('something1 = "' + state.selectedValues[0] + '"');
// ...
});
但是,如果您希望在任何相关控件更改时执行某些代码,则可以创建一个函数并将该函数传递给事件处理程序:
function foo () {
var state1 = control1.getState();
var state2 = control2.getState();
var whereClauses = [];
whereClauses.push('something1 = "' + state1.selectedValues[0] + '"');
whereClauses.push('something2 = "' + state2.selectedValues[0] + '"');
// ...
}
// add event handlers to control1 and control2 using foo
google.visualization.events.addListener(control1, 'statechange', foo);
google.visualization.events.addListener(control2, 'statechange', foo);
如果函数需要知道更改了哪个控件,则可以执行以下操作:
function foo (control, columnName) {
var state = control.getState();
var whereClauses = [];
whereClauses.push(columnName + ' = "' + state.selectedValues[0] + '"');
// ...
}
// add event handlers to control1 and control2 using foo
google.visualization.events.addListener(control1, 'statechange', function () {
foo(control1, 'something1');
});
google.visualization.events.addListener(control2, 'statechange', function () {
foo(control2, 'something2');
});
如何将其置于if条件中?也就是说,如果选择了类别过滤器,那么将执行一些代码。哦,您希望在设置条件时准确调用一些代码。然后,您需要在
类别识别器
上注册状态更改
事件,并在注册的函数中执行一些代码。代码将有所帮助,有关更多信息,请参见ControlWrapper
外观。但我不知道如何在if语句中使用事件。请阅读上面的新代码。这正是我在之前的评论中所说的。谢谢@Jeremy Faller的回答。我问了另一个关于你答案的问题。如果可能,请检查我的代码。如何将其放入if条件中?也就是说,如果选择了类别过滤器,那么将执行一些代码。哦,您希望在设置条件时准确调用一些代码。然后,您需要在类别识别器
上注册状态更改
事件,并在注册的函数中执行一些代码。代码将有所帮助,有关更多信息,请参见ControlWrapper
外观。但我不知道如何在if语句中使用事件。请阅读上面的新代码。这正是我在之前的评论中所说的。谢谢@Jeremy Faller的回答。我问了另一个关于你答案的问题。如果可能的话,请检查我的代码。