我想在网站上以不同的语言显示一个段落,具体取决于浏览器设置(不幸的是,它必须使用 jQuery 来完成)。
到目前为止,我已经可以向我显示浏览器的语言,但是当我尝试根据语言显示/隐藏 div 元素时,它既不显示又不显示。
我已经尝试过用“===”代替“==”,语言代码似乎是正确的(我用警报测试了它)。
我做错了什么?这是我的小提琴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。那么您的英语美国用户语言将类似于德国德语的“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)是隐藏两个可用的 div - 如果语言不是 #english
,则隐藏 en-GB
div;如果语言不是 #deutsch
,则隐藏 de
div 。因此,如果用户有不同的浏览器语言设置(例如 fr
或 en-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 隐藏了您忘记包含在小提琴中的两个 div。
顺便说一句,
==
和===
比较之间的唯一区别是检查参数两边的类型是否也匹配,而不仅仅是值。所以 5 == '5'
为真(注意,您正在将值为 5 的 integer
与值为 5 的 string
进行比较),而 5 === '5'
则不为真 - 即。 ===
,也称为严格相等,比 ==
相等运算符更严格:) 严格相等符号通常用于防止潜在错误,例如将数字和字符串相加在一起(例如。 5 + 3 = 8
-注意,两者都是整数,结果也是整数,但是 '5' + 3 = '53'
- 注意,一个是字符串,另一个是整数,结果是字符串)