Google Apps脚本:获取与复选框相关联的文本的背景颜色,以在已选中状态和未选中状态之间切换

时间:2012-03-27 17:45:04

标签: google-apps-script

我正在开发一个用Google Apps脚本编写的UiApp,它要求与复选框关联的文本的背景颜色在选中时变为绿色,在未选中时变为橙色。但我似乎无法让它发挥作用。 你知道我怎么能让它在两个州之间切换吗?

以下是示例代码:

var checkbox = app.createCheckBox("Complete").setId(id).setName('id'+String(id));

var clienthandler = app.createClientHandler()
          .forEventSource().setEnabled(true).setStyleAttribute("backgroundColor","green")
         .forEventSource().setEnabled(false).setStyleAttribute("backgroundColor","orange");   

 checkbox.addValueChangeHandler(clienthandler);

2 个答案:

答案 0 :(得分:0)

以下是使用ScriptPropertiesserver handler执行此操作的方法。

function doGet(e) {
  var app = UiApp.createApplication();
  ScriptProperties.setProperty('toggleColor', 'green');
  var checkbox = app.createCheckBox("Complete").setId('hi').setName('id'+String('hi'))
                    .setStyleAttribute('backgroundColor',  ScriptProperties.getProperty('toggleColor'));

  var handler = app.createServerHandler('toggle');
  handler.addCallbackElement(checkbox);
  checkbox.addClickHandler(handler);
  app.add(checkbox);
  return app;
}

function toggle(e) {
  var app = UiApp.getActiveApplication();
  var color = ScriptProperties.getProperty('toggleColor');
  var checkbox = app.getElementById('hi');
  if (color == 'green') {
    ScriptProperties.setProperty('toggleColor', 'orange');
  } else {
    ScriptProperties.setProperty('toggleColor', 'green');
  }
  checkbox.setStyleAttribute('backgroundColor', ScriptProperties.getProperty('toggleColor'));
  return app;
}

答案 1 :(得分:0)

客户端处理程序也可以这样做:

  var textbox= ... define your textbox or get it by Id and give it a color 
  var clienthandler = app.createClientHandler()
     .forEventSource().setEnabled(true);// not really necessary in this case
     .forTargets(textbox).setStyleAttribute("backgroundColor","green");// assuming color was different by default
  checkbox.addValueChangeHandler(clienthandler);