私が行った簡単なテストから、この小さなテストに示すように、単独で使用してもエラーはスローされませんが、要素の ID を変更することはできないようです:
function doGet() {
var app = UiApp.createApplication().setTitle('Button Test');
return app.add(app.createTextBox().setId('tbox').setName('tbox').setText('tbox')
.addKeyPressHandler(app.createServerHandler('inspectBox'))).add(
app.createButton('Change').addClickHandler(app.createServerHandler('btnClick')));
}
function inspectBox(e) {
var p = e.parameter;
var app = UiApp.getActiveApplication();
return app.add(app.createLabel('id: '+p.source)).add(
app.createLabel('name: '+(p.tbox ? 'tbox' : p.txt1 ? 'txt1' : 'not found')));
}
function btnClick() {
var app = UiApp.getActiveApplication();
app.getElementById('tbox').setId('txt1');
//app.getElementById('tbox').setName('txt1');
return app;
}
後で、そのsetId
行にコメントを付けてコメントを外しsetName
、テキスト ボックスに char を入力すると、名前が変わることがわかります。そして、setName
たとえばsetText
. setId
要素で何かをしようとすると失敗します。
とにかく、他の人がコメントしたように、そのような要件があるのは本当に奇妙です。あなたがやりたいことをする別の方法(おそらくもっと良い方法)を見つけるべきだと思います(あなたが説明していません)。