如果你用 Ja vaScript 动态向

在使用 Ja vaScript 动态往 `
在你的代码里,JSON 数据结构明确使用的是 nom 字段(例如 "nom":"name_App"),但 Ja vaScript 却尝试访问 app.name:
option.textContent = app.name; // ❌ 错误:JSON 中无 'name' 字段这会导致 app.name 的值为 undefined,进而让 option.textContent 实际被赋值为 undefined。浏览器通常会把它转换为空字符串,所以你会看到下拉项已经存在,但选项文字完全不显示。
✅ 正确的写法应该与 JSON 返回的键名严格一致:
option.textContent = app.nom; // ✅ 正确:对应 JSON 中的 "nom"同时,建议顺便增强代码健壮性,避免接口异常、字段缺失或请求失败导致下拉框无法正常使用:
function populateApp() {
fetch('./json.json')
.then(response => {
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return response.json();
})
.then(json => {
const select = document.getElementById('appli');
// 清空原有选项(除默认项外)
while (select.options.length > 1) {
select.remove(1);
}
json.forEach(app => {
const option = document.createElement('option');
option.value = app.id || ''; // 防御性赋值
option.textContent = app.nom || '';// 关键修复:使用 'nom' 而非 'name'
select.appendChild(option);
});
})
.catch(error => {
console.error('Failed to load applications:', error);
// 可选:提示用户加载失败
const placeholder = document.querySelector('#appli option:first-child');
if (placeholder) placeholder.textContent = '--Chargement échoué--';
});
}⚠️ 注意事项:
- 始终检查 JSON 字段名与 Ja vaScript 属性访问是否完全一致,包括大小写、拼写和命名习惯;
- 可在
.forEach()中使用console.log(app)调试,快速确认接口返回的数据结构; - 尽量避免直接操作
select.innerHTML,因为这可能带来事件丢失或性能问题,推荐优先使用document.createElement+appendChild; - 如果页面需要兼容国际化或多语言数据,建议后端统一字段名(例如统一使用
name),或者在前端增加字段映射处理。
完成上述修复后,Select 下拉框将能够正确显示 nom 对应的文本内容,用户可以正常看到并选择选项,同时表单提交时仍然能够通过 value 获取正确的 id。
