在'google script'中,在触发事件(按钮点击)时,我正在尝试更改文本框的名称和ID。以下是简化代码:
function addRow(e){
var app = UiApp.getActiveApplication();
app.getElementById('tbox')
.setId('txt1')
.setName('txt1');
}
现在,setId正在运行,但是setName给我一个错误。有什么东西我显然不见了吗?
答案 0 :(得分:0)
从快速测试看来,虽然如果单独使用它不会引发错误,但是无法更改元素的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
,情况并非如此,如果您对元素进行任何尝试,则会失败。
无论如何,正如其他人评论的那样,你有这样的要求确实很奇怪。我想你应该找到另一种方式(可能是更好的方式)来做你想要的(你没有描述)。