根据浏览器语言显示不同文本的代码无输出,求排查原因
问题原因及修复方案
你的代码存在几个关键问题,导致无法正常输出内容,逐一说明:
1. case 后的值未加引号,引发未定义变量错误
es 和 en 没有用引号包裹,JavaScript 会将它们视为未定义的变量,执行时会抛出 ReferenceError,直接中断代码运行。
2. 未匹配 navigator.language 的实际返回格式
navigator.language 通常返回带区域代码的字符串,比如 "es-ES"(西班牙语-西班牙)、"en-US"(英语-美国),而非单纯的 "es" 或 "en",因此你的 case 条件无法匹配到实际值。
3. 缺少默认分支与 DOM 元素存在性检查
- 若浏览器语言不在你指定的 case 范围内,代码不会执行任何输出逻辑;
- 未提前检查
document.getElementById("demo")是否存在,如果页面中没有 id 为demo的元素,会抛出Cannot set properties of null错误。
修复后的代码
// 提取浏览器语言的主代码(去除区域后缀) const language = navigator.language.split('-')[0]; // 先确认目标DOM元素存在 const demoElement = document.getElementById("demo"); if (!demoElement) { console.error("页面中未找到id为demo的元素"); return; } switch (language) { case "es": demoElement.innerText = "Hola"; break; case "en": demoElement.innerText = "Hello"; break; default: demoElement.innerText = "Hello"; // 可自定义默认显示文本 }
内容的提问来源于stack exchange,提问作者al3j4ndr0
相关产品推荐
相关产品推荐

