Fau*_* R. 3 google-apps-script
大家都好,
我可以在处理函数中使用全局变量,但是我不能在函数内"全局"修改它们.
在下面的代码中,在第一次单击后,它将显示数字1001(处理程序读取,递增并显示正确的结果).但是,任何进一步的点击总是会显示1001,因此处理程序会继续读取原始的globalVar值:它不会像我期望的那样被修改.
我能做些什么来解决这个问题?
var globalVar = 1000;
function testingGlobals() {
var app = UiApp.createApplication();
var doc = SpreadsheetApp.getActiveSpreadsheet();
var panel = app.createVerticalPanel().setId('panel');
app.add(panel);
panel.add(app.createButton(globalVar).setId("globalVar").addClickHandler(app.createServerHandler("chgGlobal").addCallbackElement(panel)));
doc.show(app)
}
function chgGlobal(e) {
var app = UiApp.createApplication();
globalVar++;
app.getElementById("globalVar").setText(globalVar);
return app;
}
Run Code Online (Sandbox Code Playgroud)
您不能以这种方式递增全局变量,因为每次处理程序执行时,都会初始化全局变量然后进行操作.您可以使用隐藏的表单字段来保存您可以在处理程序中更改的变量,只要应用程序处于打开状态,它就会保持不变.
例如
function testingGlobals() {
var app = UiApp.createApplication();
var doc = SpreadsheetApp.getActiveSpreadsheet();
var panel = app.createVerticalPanel().setId('panel');
var myVar = app.createHidden().setValue('0').setName('myVar').setId('myVar');
panel.add(myVar);
app.add(panel);
panel.add(app.createButton('0').setId("globalVar").addClickHandler(app.createServerHandler("chgGlobal").addCallbackElement(panel)));
doc.show(app)
}
function chgGlobal(e) {
var app = UiApp.createApplication();
gloabalVar = parseInt(e.parameter.myVar);
gloabalVar ++;
app.getElementById('myVar').setValue(gloabalVar.toString());
app.getElementById("globalVar").setText(gloabalVar);
return app;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10693 次 |
最近记录: |