> ## Documentation Index
> Fetch the complete documentation index at: https://docs.supernote.com/llms.txt
> Use this file to discover all available pages before exploring further.

# batchUpdatePageElements

> 批量更新当前文件指定页面中的元素。

```ts wrap theme={null}
static batchUpdatePageElements(
  deleteNumList: number[],
  elements: Element[],
  page: number,
  layer?: number | null
): Promise<APIResponse<boolean>>;
```

<Note>
  当该接口操作的是当前页时，请先调用 [`getPageDisplaySize`](/zh/api-reference/supernote-plugin/plugin-comm-api/get-page-display-size) 获取当前页面显示尺寸，不要调用 [`PluginFileAPI.getPageSize`](/zh/api-reference/supernote-plugin/plugin-file-api/get-page-size) 获取文件页面尺寸，否则位置数据可能对不上。
</Note>

`deleteNumList` 按页内序号（`numInPage`）删除，不涉及缓存；`elements` 部分是插入新元素，通常来自 [`createElement`](/zh/api-reference/supernote-plugin/plugin-comm-api/create-trail) 或从别处读取到的既有元素，插入前后 `uuid` 保持不变，且依赖这些元素当前仍在原生缓存中——缓存中找不到的元素会被直接跳过，不会单独报错，详见 [Element 缓存与释放](/zh/plugin-base/file-op/element-op#4-element-缓存与释放)。

**参数**

| 参数              | 类型                                                            | 说明                                                                                                                               |
| --------------- | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `deleteNumList` | `number[]`                                                    | 要删除的元素页内序号列表，序号从 `1` 开始                                                                                                          |
| `elements`      | [`Element[]`](/zh/api-reference/supernote-plugin/types/trail) | 要插入的新元素数组                                                                                                                        |
| `page`          | `number`                                                      | 页面索引，从 `0` 开始                                                                                                                    |
| `layer`         | `number \| null`                                              | 可选图层参数。笔记文件（`.note`）不传时使用当前图层；如果是识别笔记，不管传不传都不会使用该参数，因为识别笔记只有一个图层；文档文件（`.pdf`、`.epub` 等）不管传不传都不会使用该参数，因为文档文件只有一个图层。传值时取值范围为 `0-3` |

**返回**

* [`APIResponse<boolean>`](/zh/api-reference/supernote-plugin/types/api-response)：`result === true` 表示批量更新成功

**异常**

* 当 `deleteNumList` 不是合法的整数数组时，会抛出参数校验异常
* 当 `elements` 不是合法的元素数组时，会抛出参数校验异常
* 当 `page` 不是大于等于 `0` 的整数时，会抛出参数校验异常
* 当 `layer` 传值且不是 `0-3` 的整数时，会抛出参数校验异常

## 示例

```ts wrap theme={null}
import { PluginCommAPI, type Element } from 'sn-plugin-lib';

/**
 * 批量更新当前文件指定页面元素的示例。
 */
export async function exampleBatchUpdatePageElements(elements: Element[]) {
  const deleteNumList = [1, 2];
  const page = 0;
  const layer = 0;
  const res = await PluginCommAPI.batchUpdatePageElements(deleteNumList, elements, page, layer);
  if (!res.success) {
    console.log('batchUpdatePageElements failed', res.error);
    throw new Error(res.error?.message ?? 'batchUpdatePageElements 调用失败');
  }
  console.log('batchUpdatePageElements result', res.result);
  return res.result;
}
```
