从我所做的快速测试来看,虽然单独使用它不会引发错误,但无法更改元素的 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
,然后在文本框中键入一个字符,您会看到名称发生了变化。如果setName
您继续使用例如setText
. 这不是真的setId
,如果你在元素上尝试任何东西都会失败。
无论如何,正如其他人评论的那样,您有这样的要求确实很奇怪。我想你应该找到另一种方式(可能是更好的方式)来做你想做的事(你没有描述过)。