【问题标题】:Running a javascript function based on statechange运行基于 statechange 的 javascript 函数
【发布时间】:2013-07-20 18:44:26
【问题描述】:

按照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....
}

【问题讨论】:

    标签: javascript events controls google-visualization


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      相关资源
      最近更新 更多