ADBE PDFフォーム内のJavaScriptで「配列内の重複検索とその出現順番の表示」をしたい
初心者です。以下の質問文章そのものが間違っていればそれも指摘して頂ければ助かります。JavaScript は PDFフォームで初めて使用するようになりました。ですが、ADOBE JavaScript は随分前から開発が止まっているようで、どこを探しても日本語の説明資料が見つからず手探りでやっています。ちなみに変数の宣言で使用できるのは var のみです。
エクセルを思い浮かべて頂きたいのですが。PDFフォーム内にテキストフィールドが縦に2列それぞれ10個配置してあり、その2列目(B列)にランダムに以下のように1が記入されているとします。
A列 B列
[] [1]
[] []
[] []
[] []
[] [1]
[] []
[] [1]
[] []
[] []
[] [1]
この右側のフィールドの[1]が上から数えて何番目なのかを左側の列(A列)のフィールドに以下のように表示させたいのですが、やり方がわかりません。いざやろうと思うと、配列の記載や操作などをどうすれば良いのかがわかりません。たぶんB列を配列にして indexOf を使うのだろうとは思うのですが、重複している[1]の2番目や3番目を検索して、[2]や[3]を返すコードが思い浮かばないのです。
A列 B列
[1] [1]
[] []
[] []
[] []
[2] [1]
[] []
[3] [1]
[] []
[] []
[4] [1]
で、、以下はたぶん..余計な内容ですが、AdobeのJavaScriptは多少、他と作法が違うようなので念のため。。
PDFフォームの場合。フォーム内に配置した各フィールドの、フィールドプロパティの中にある、計算タブの中にJavaScriptを書き込む場所があります。そこに記載したJavaScriptは、そのフィールドだけに対応しています。
最初にフィールド名からオブジェクトを作成し、次に変数を宣言します。そして最後に
event.value = hoge;
のようにして当該フィールドに表示させます。
もし上記のいちばん左上のフィールド名が "A_1" なら
javascript
1var A1 = this.getField("A_1"); //"A_1"フィールドの取得 2var X1 = this.getField("X_1"); //"X_1"フィールドの取得 3 4var hoge = X1.value*2; //値の代入 5event.value = hoge; //"A_1"フィールドに表示
フィールドから他のフィールドに書き込むこともできますが、全てのフィールドのJavaScriptは常に動いている状態なので、フィールドの計算順序の指定はできますが、あまり多く(A→B→Cのように)連続させると、どこかで互いに干渉してエラーが出やすくなってしまいます。
各フィールド内のJavaScriptごとに何度もオブジェクト宣言しないといけないから?なのかな。。と解釈しています。
グローバルというのでしょうか、それができないみたいです。文書レベルのJavaScript(と記載されている場所がある)を書き込む場所があるのですが、やってみましたが、それが読み込まれて動くのは当該PDFファイルを開いた時だけのようでした。定義されてないと言われてしまいます。
上記とは別に。フォーム内にボタンフィールドを作成し。そのボタンにイベント設定することで。幾つかのフィールドをJavaScriptでまとめて動かすことができます。各フィールドを個々のオブジェクトとして先に宣言してから動かす形です。ちなみにこの場合も、各ボタンごとに毎回フィールドを取得し直し、変数は宣言し直さなければなりません。
いずれにしてもボタンフィールドで解決するしかないのかなぁ。。とは思っているのですが。よろしくお願いします。<(_ _)>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/09 17:59