我正在开发一个用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);
答案 0 :(得分:0)
以下是使用ScriptProperties和server 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);