FAQ:$p.events.on_editor_loadを複数設定できるようにしたい
## 回答
以下いずれかの方法で実現できます。
1. 実行したい処理を配列に追加し、$p.events.on_editor_loadで配列に格納した処理を順次呼び出す。
1. 実行したい処理を一つのファンクションとして定義し、$p.events.on_editor_loadで順次ファンクションを呼び出す。
---
## 概要
複数のスクリプトファイルに渡って$p.events.on_editor_loadを複数書くとスクリプトが上書きされてしまい、一番最新のものしか動作しなくなります。回避策として以下の2つの方法があります。
1. 実行したい処理を配列に追加し、$p.events.on_editor_loadで配列に格納した処理を順次呼び出す。
1. 実行したい処理を一つのファンクションとして定義し、$p.events.on_editor_loadで順次ファンクションを呼び出す。
なお、$p.events.on_editor_loadの他、$p.events.on_grid_loadやその他[イベント発火系スクリプト](/ja/manual/script-events-after-send)について同様の現象が発生しますので、本内容で回避可能です。
### 1. 実行したい処理を配列に追加し、$p.events.on_editor_loadで配列に格納した処理を順次呼び出す
## サンプルコード
##### JavaScript
```
//配列を定義
$p.events.on_editor_load_arr = [];
//処理1を追加
$p.events.on_editor_load_arr.push(function() {
alert("test1"); //任意の処理
});
//処理2を追加
$p.events.on_editor_load_arr.push(function() {
alert("test2"); //任意の処理
});
//実行
$p.events.on_editor_load = function() {
for (let i = 0; i < $p.events.on_editor_load_arr.length; i++) {
$p.events.on_editor_load_arr[i] ();
}
}
```
プリザンターの[スクリプト](/ja/manual/table-management-script)には以下のように登録します。
![image](https://pleasanter.org/binaries/a7b00f34a9bb4fac971459986ecdee2f)
ID=1で「配列の定義」のスクリプト、ID=4に「実行」のスクリプトを登録します。ID=2、ID=3には実行したい処理を追加するスクリプトをそれぞれ登録します。この例では2つの処理を追加していますが、ID=1、ID=4の間に記載することでいくつでも処理を追加することができます。
### 2. 実行したい処理を一つのファンクションとして定義し、$p.events.on_editor_loadで順次ファンクションを呼び出す
## サンプル
##### JavaScript
```
//処理1を定義
$p.ex.myFunc1 = function() {
alert("test1"); //任意の処理
}
//処理2を定義
$p.ex.myFunc2 = function() {
alert("test2"); //任意の処理
}
//実行
$p.events.on_editor_load = function() {
$p.ex.myFunc1();
$p.ex.myFunc2();
}
```
プリザンターの[スクリプト](/ja/manual/table-management-script)には以下のように登録します。
![image](https://pleasanter.org/binaries/a7b00f34a9bb4fac971459986ecdee2f)
ID=1,2で定義したファンクションのスクリプトを登録し、。ID=3で「実行」のスクリプトを登録します。この例では2つの処理を追加していますが、ID=3の前に記載することでいくつでも処理を追加することができます。