0

按照这个stackoverflow question中的答案,我正在尝试运行以下代码。但是 myfunction 只需要一个 google 可视化事件。那么下面的代码是否有效?或者如何在单个函数中处理多个 statechange google 可视化事件?

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....
}
4

1 回答 1

0

您的问题不是很清楚,但我假设您正在从 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 "));

如果我是你,我不会这样做。我会将参数传递给服务器,并在那里重新映射它们(在适当地过滤它们之后等)。这又是非常危险的。

于 2013-07-22T13:18:54.327 回答