下拉菜单选项内容为空,是因为 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);});}
补充注意事项:
option.textContent = app.nom || 'N/A';
name),并在后端/配置侧标准化。populateApp() 在 DOM 加载完成后调用(例如放在 DOMContentLoaded 事件中),否则 document.getElementById('appli') 可能返回 null。执行上述修改后,下拉框将正确显示 "name_App" 等文本内容,用户可直观识别所选项目。