ドキュメントから入力されたフィールドを含むパネルを表示するアプリがあります。
ユーザーがフィールドを編集すると、更新された値によってドキュメントが更新されます。1 つの例外を除いて、すべてが機能しています。
パネルにはいくつかの 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);
}
}
エラーは (イタリア語からの翻訳) です: Generic オブジェクトに 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 は常に Generic オブジェクトを返します(これは他の回答とは対照的です)。
ありがとう