下面的代码让我有些头疼。这是一个非常简单的应用程序,有 2 个单选按钮和一个按钮。这个应用程序的想法是在电子表格中记录所选单选按钮的值。现在,如果我选择第一个单选按钮(“one”),然后更改为第二个单选按钮(“two”),然后返回“one”并单击“录制”按钮,应用程序将在电子表格。它有点累积选择。
不知道我是否说清楚了,但这里是模拟问题的步骤:
1-运行下面的应用程序;2-选择单选按钮“一”,然后再次选择“二”和“一”,然后按“记录”按钮;3- 检查电子表格中的重复值。
您单击单选按钮的次数越多,将记录的重复值越多。
知道为什么会发生这种情况,我该如何克服这个问题?
function myAppFunction() {
var mydoc = SpreadsheetApp.getActiveSpreadsheet();
var app = UiApp.createApplication().setTitle('Here is the title bar');
var panel = app.createVerticalPanel().setId('panel');
//using setName will give you the ability to get the value
var myRadio1 = app.createRadioButton("group","one").setName('myRadio1').setId('myRadio1');
var myRadio2 = app.createRadioButton("group","two").setName('myRadio2').setId('myRadio2');
var button = app.createButton("Gravar").setId("record_");
//A label will be used to give feedback on the value of the checkBox
var infoLabel = app.createLabel('Check the box and click submit').setId('infoLabel');
//handlers
var handler = app.createServerChangeHandler('radio1');
handler.addCallbackElement(panel);
myRadio1.addClickHandler(handler);
var handler2 = app.createServerChangeHandler('radio2');
handler2.addCallbackElement(panel);
myRadio2.addClickHandler(handler2);
//put everything in the UI
panel.add(myRadio1);
panel.add(myRadio2);
panel.add(button);
panel.add(infoLabel);
app.add(panel);
mydoc.show(app);
}
function radio1(e){
var app = UiApp.getActiveApplication();
app.getElementById('myRadio2').setValue(false);
app.getElementById('infoLabel').setText('one is: ' + e.parameter.myRadio1);
var panel = app.getElementById("panel");
var button = app.getElementById("gravar");
var handler = app.createServerClickHandler("record_");
handler.addCallbackElement(panel);
button.addClickHandler(handler);
return app;
}
function radio2(e){
var app = UiApp.getActiveApplication();
app.getElementById('myRadio1').setValue(false);
app.getElementById('infoLabel').setText('two is: ' + e.parameter.myRadio2);
var button = app.getElementById("gravar");
var handler = app.createServerClickHandler("gravar_");
handler.addCallbackElement(app.getElementById("panel"));
button.addClickHandler(handler);
return app;
}
function record_(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var lastRow = sheet.getLastRow();
var freeCell = sheet.getRange("A1").offset(lastRow, 0);
freeCell.setValue(e.parameter.myRadio1);
}