1

在“谷歌脚本”中,在触发事件(按钮单击)时,我试图更改文本框的名称和 ID。以下是简化代码:

    function addRow(e){
      var app = UiApp.getActiveApplication();
      app.getElementById('tbox')
         .setId('txt1')
         .setName('txt1');
    }

现在, setId 正在工作,但 setName 给我一个错误。有什么我明显遗漏的东西吗?

4

1 回答 1

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,如果你在元素上尝试任何东西都会失败。

无论如何,正如其他人评论的那样,您有这样的要求确实很奇怪。我想你应该找到另一种方式(可能是更好的方式)来做你想做的事(你没有描述过)。

于 2013-06-23T15:25:22.017 回答