我有一个应用程序,它显示一个面板,其中包含从文档中填充的字段。
用户编辑字段,更新的值更新文档。一切正常,只有一个例外。
该面板有几个TextBox 和一个ListBox。显示面板时,一个函数会填充文本框中的值。它使用 getElementById 来获取小部件。
我想显示已经选择了正确值的 ListBox。不幸的是,这个小部件上的 getElementById 返回一个 Generic,而 ListBox 的标准方法不可用。
这是一段代码:
function fillSingleDocFields(meta, app) {
var eleTitolo = app.getElementById('idnomeDoc'); // OK!
eleTitolo.setText(meta.titolo);
var lbTipologia = app.getElementById('idtipologia');
Logger.log(lbTipologia); // KO
setListBoxSelected(lbTipologia, meta.tipologia);
return app;
}
setListBoxSelected 函数在第一个 ListBox 特定方法上失败:
function setListBoxSelected(lb, value) {
for (var i=0;i<lb.getItemCount();i++) // runtime error
{
if ( lb.getValue(i) == value)
lb.setSelectedIndex(i);
}
}
错误是(从意大利语翻译):通用对象中没有 getItemCount 函数。
这是代码执行记录:
[13-07-08 12:13:01:691 CEST] (class).getElementById([idnomeDoc]) [0 secondi]
[13-07-08 12:13:01:692 CEST] (class).setText([mio titolone 2]) [0 secondi]
[13-07-08 12:13:01:692 CEST] (class).getElementById([idtipologia]) [0 secondi]
[13-07-08 12:13:01:692 CEST] (class).toString() [0 secondi]
[13-07-08 12:13:01:692 CEST] (class).toString() [0 secondi]
[13-07-08 12:13:01:692 CEST] Logger.log([Generic, []]) [0 secondi]
[13-07-08 12:13:01:693 CEST] (class).toString() [0 secondi]
[13-07-08 12:13:01:735 CEST] Esecuzione non riuscita: TypeError: Impossibile trovare la funzione getItemCount nell'oggetto Generic. (riga 29, file "Controller") [0.404 secondi di esecuzione totale]
一种可能的解决方案是在创建 ListBox 时设置选定的值,但不幸的是,在那一刻,该值是未知的。
我的问题是:
- 是否可以转换 getElementById 的结果?(我不这么认为,寻找类似的问题);
- 我的方法有问题吗?还是 getElementById 总是返回通用对象(这与其他答案形成对比)。
谢谢