Display divs based on browser language with show/hide function (error: nothing shows up)

Display divs based on browser language with show/hide function (error: nothing shows up)

我想在网站上以不同的语言显示一个段落,这取决于浏览器的设置(不幸的是,它必须使用 jQuery 来完成)。

到目前为止,我已经达到可以向我显示浏览器语言的程度,但是当我尝试 show/hide 基于语言的 div 元素时,它既不显示也不显示.

我已经尝试用“===”代替“==”,语言代码似乎是正确的(我用警报测试过)。

我做错了什么?这是我的 fiddle http://jsfiddle.net/o4um72af/4/

var userLang = navigator.language || navigator.userLanguage;

if (userLang == "en-GB") {
     $("#english").show();
}
else {
     $("#english").hide();
}

if (userLang == "de") {
     $("#deutsch").show();
}
else {
     $("#deutsch").hide();
}

您已经在 CSS 中隐藏了 #deutsch 和 #english,因此不需要 jQuery。那么你的 userLang 对于英语我们将类似于 "en-US" 和 "de-DE" 对于德国的德语。您可以在代码末尾使用 console.log(userLang) 在控制台中查看。这至少对我有用。

此外,代码只是放在那里,没有被指示启动,这是对您的代码的更新,如果应用于您的 jsfiddle,它可以解决问题,我更新了 userLang 值,删除了隐藏方法,并添加了文档准备功能,祝你好运!

$(function(){
  var userLang = navigator.language || navigator.userLanguage;
  if (userLang === "en-US") {
       $("#english").show();
  }       
  if (userLang === "de-DE") {
       $("#deutsch").show();
  }
});

您检测语言的代码工作正常。对我来说,它显示的是英文版本,因为我设置了 en-GB 语言。 但是,您正在做的事情(至少基于提供的 jsFiddle)隐藏了两个可用的 divs - 如果语言不是 en-GB 则隐藏 #english div 并隐藏#deutsch div 如果语言不是 de。因此,如果用户使用不同的浏览器语言设置(例如 fren-US),两个 div 都将被隐藏。

此外,您已经通过 CSS 隐藏了 div,因此无需隐藏语句的 else 部分。

我建议将代码改成这样

var userLang = navigator.language || navigator.userLanguage;

if (userLang == "de") {
     $("#deutsch").show();
} else {
     $("#english").show();
}

这样,您将为具有 de 语言设置的人显示德语 div,为其他人显示英语 div(我想这就是您想要的?)

如果你在其他地方的代码没有像你建议的那样显示任何 div,那么你可能有一些其他的 CSS 规则或 JS 隐藏了两个 divs您忘记将其包含在 fiddle.

顺便说一句,===== 比较的唯一区别是检查参数两侧的类型是否也匹配,而不仅仅是值。所以 5 == '5' 会是真的(注意,你正在比较一个 integer 与值 5 和 string 与值 5)而 5 === '5' 不会是真的 - 即。 ===,也称为严格相等,比 == 相等运算符更严格 :) 严格等号通常用于防止潜在的错误,例如将数字和字符串相加(例如5 + 3 = 8 - 注意两者都是整数,结果是整数,但是 '5' + 3 = '53' - 注意,一个是字符串,另一个是整数,结果是字符串)