如何修复下拉选择框选项文本不可见的问题

作者:袖梨 2026-08-17

下拉菜单选项内容为空,是因为 JavaScript 中错误地访问了 JSON 数据中不存在的 name 字段,而实际字段名为 nom,导致 textContent 被设为 undefined,从而渲染出空白选项。

下拉菜单选项内容为空,是因为 JavaScript 中错误地访问了 JSON 数据中不存在的 `name` 字段,而实际字段名为 `nom`,导致 `textContent` 被设为 `undefined`,从而渲染出空白选项。

在你提供的代码中,JSON 数据结构如下:

[{"id":"id_App","nom":"name_App"}, {"id":"id_App","nom":"name_App"}]

关键点在于:表示应用名称的键是 "nom",而非 "name"。但在 JavaScript 的 populateApp() 函数中,你写的是:

option.textContent = app.name; // ❌ 错误:app.name 为 undefined

由于 app.name 不存在,option.textContent 实际被赋值为 undefined,而浏览器会将其渲染为空白字符串(而非报错),因此下拉项看起来“有选项但无文字”。

正确写法应为:

option.textContent = app.nom; // ✅ 使用正确的属性名

完整修正后的 JavaScript 函数如下:

function populateApp() {fetch('./json.json').then((response) => response.json()).then((json) => {const appli = document.getElementById('appli');json.forEach((app) => {const option = document.createElement('option');option.value = app.id;option.textContent = app.nom; // ← 已修正:使用 nom 而非 nameappli.appendChild(option);});}).catch((error) => {console.error('Error fetching JSON:', error);});}

补充注意事项:

  1. 建议在插入前校验数据,避免因字段缺失导致静默失败:
    option.textContent = app.nom || 'N/A';
  2. 若需支持多语言或未来字段变更,可考虑统一约定 JSON Schema(如始终使用 name),并在后端/配置侧标准化。
  3. 确保 populateApp() 在 DOM 加载完成后调用(例如放在 DOMContentLoaded 事件中),否则 document.getElementById('appli') 可能返回 null

执行上述修改后,下拉框将正确显示 "name_App" 等文本内容,用户可直观识别所选项目。

相关文章

精彩推荐