【フォームブリッジ】テーブル追加後、追加したテーブルに1行前の情報を反映させたい

テーブルが追加された際、以下のように
1行前のデータを以下のように取得して追加されたテーブルに
反映させようとしているのですが、追加されたテーブルのgetElementsByTagNameを
読み取ってくれないエラーが発生してうまくいきません。(コメントでコピーと書いている部分)
1行前のデータについてはうまく値の取得ができています。

以下のコードだとなんとなくテーブル数が可変するため、
うまくいかないんじゃないかと思っているのですが、
どなたか良い知恵をお持ちでしたらお助け頂けますと幸いです。

(function() {
  "use strict";
  
  fb.events.fields.{fieldCode}.add = [function(state) {

    /* テーブルの数を取得 */
  let i = fb.getTableElementsByCode('tableCode', 'fieldCode').length;
    let n = i - 1;

    /* ひとつ前のテーブルの値を取得 */
  let str = fb.getTableElementsByCode('tableCode', 'fieldCode')[n].getElementsByTagName('input')[0].value;

    /* コピー */
  fb.getTableElementsByCode('tablecode', 'fieldcode')[i].getElementsByTagName('input')[0].value = str;

    return state;

    }];

})();

kenichiさん

こんにちは。

 

addイベント内は、HTML上に行要素が生成される前の処理のようです。

そのため、[i]がテーブル長を超えた形になるので、エラーになるのだと思います。

 

setTimeoutを使い、コピーのタイミングを少しずらせば反映できます。秒数は適当です。

/* 100ミリ秒後に実行 */
setTimeout(function() {
/* コピー */
fb.getTableElementsByCode('tablecode', 'fieldcode')[i].getElementsByTagName('input')[0].value = str;
}, 100);

koichiさん

ご教示頂き、ありがとうございます!
頂いた内容で設定ができました。
この度は、お知恵を頂きありがとうございます。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。