javascript - 防止在每次点击时添加 DOM 元素
问题描述
我有以下脚本,它获取具有给定类的 DOM 元素,并将它们添加到数组中。然后它循环遍历数组并将值添加到WordPress Gutenberg 中组件的option
元素。SelectControl
我能够将数组中的元素放入下拉列表中,但我收到以下错误:Uncaught TypeError: Cannot read property 'appendChild' of null
在控制台中。选择时,它也不会在选择组件中显示所选选项,并且每次选择下拉列表中的选项时都会复制下拉列表中的数组选项。
我怀疑这可能是执行顺序问题,但不完全确定:
setTimeout(() => {
let headers = [...document.querySelectorAll('.wp-block-heading')].map(item => item.innerText);
const select = document.getElementById('selectheader');
for (let i = 0; i < headers.length; i++) {
let opt = headers[i];
let el = document.createElement('option');
el.textContent = opt;
el.value = opt;
select.appendChild(el);
}
}, 1000);
<SelectControl
value={[headers]}
id="selectheader"
options={[headers]}
onChange={setJumpLink}
/>
解决方案
它实际上需要:
if (select && select.innerHTML) {
select.innerHTML = '';
}
在循环之前。
推荐阅读
- angular - 反应形式的验证组 mat-checkbox
- php - 将所有内容(页面和子域)重定向到新的域页面
- html - 如何为网格容器设置一定的页面宽度?
- python - 使用 Python 脚本中的参数调用 php 文件
- javascript - React Hooks 状态更新落后了一步。因此,我的更改无法正常工作
- keycloak - Keycloak 前端和后端客户端
- google-cloud-platform - 单词时间戳总是立即连续并且总是从 0 开始吗?
- bash - 在路径中的任意位置查找具有特定文件夹名称的文件
- c# - 更改 Telerik:radcalendar 中日期列表的样式
- javascript - Splidejs视频未显示