基于statechange运行javascript函数
根据本文中的答案,我尝试运行以下代码。但是myfunction只需要一个google可视化事件。那么下面的代码有效吗?或者如何在单个函数中处理多个statechange google可视化事件基于statechange运行javascript函数,javascript,events,controls,google-visualization,Javascript,Events,Controls,Google Visualization,根据本文中的答案,我尝试运行以下代码。但是myfunction只需要一个google可视化事件。那么下面的代码有效吗?或者如何在单个函数中处理多个statechange google可视化事件 var categoryPicker1, categoryPicker2; function drawVisualization() { // etc. categoryPicker1 = // etc... categoryPicker2 = // etc... // Registe
var categoryPicker1, categoryPicker2;
function drawVisualization() {
// etc.
categoryPicker1 = // etc...
categoryPicker2 = // etc...
// Register to hear state changes.
google.visualization.events.addListener(categoryPicker1, 'statechange', myfunction);
google.visualization.events.addListener(categoryPicker2, 'statechange', myfunction);
// etc.
}
function myfunction() {
var whereClauses = [];
if (categorypicker1) {
whereClauses.push("something1 = '" + document.getElementsByClassName('goog-inline-block goog-menu-button-caption')[0].innerHTML + "'")
}
if (categorypicker2) {
whereClauses.push("something2 = '" + document.getElementsByClassName('goog-inline-block goog-menu-button-caption')[1].innerHTML + "'")
}
whereClause = whereClauses.join(" AND ");
// do something....
}
从您的问题中不太清楚,但我假设您正在从CategoryPicker中的选定项向数据库构建SQL查询。尽管这是一件非常糟糕/危险的事情(构建SQL客户端,并将其发送到服务器),但只要从您的CategoryPicker中抓取selectedItems,并使用“and”将它们连接起来,就可以做到这一点。比如: 如果我是你,我就不会这么做。我会将参数传递给服务器,并在那里重新映射它们(在适当地过滤它们之后,等等)。这也是非常危险的
values = categoryPicker1.getState().selectedValues;
values = values.concat(categoryPicker2.getState().selectedValues);
var args = values.map(function(_) { return "'" + _ + "'"; });
console.log(args.join(" AND "));