質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1389閲覧

ADBE PDFフォーム内のJavaScriptで「配列内の重複検索とその出現順番の表示」をしたい

yukinoihana

総合スコア5

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/05/08 06:59

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でまとめて動かすことができます。各フィールドを個々のオブジェクトとして先に宣言してから動かす形です。ちなみにこの場合も、各ボタンごとに毎回フィールドを取得し直し、変数は宣言し直さなければなりません。

いずれにしてもボタンフィールドで解決するしかないのかなぁ。。とは思っているのですが。よろしくお願いします。<(_ _)>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

空白を0と認識するように設定して、足し算してその答えをA列に入力するとかはどうですか?

A_1 = B_1として
A_n = B_n + A_n-1

数学みたいですけど

投稿2020/05/08 15:02

okina

総合スコア471

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukinoihana

2020/05/09 17:59

ありがとうございます。 やっぱりその方法しか無いですよね。。 でも本当に回答してもらえて助かりました。 他の方から言ってもらえたことでさっさと諦めがついて確信が持てました! (^^)v
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問