我想在网站上以不同的语言显示一个段落,具体取决于浏览器的设置(不幸的是必须使用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();
}
答案 0 :(得分:2)
您已经在CSS中隐藏#deutsch和#english,因此不需要jQuery。那么,您在德国使用英语的userLang就像在德国用德语的“ en-US”和“ de-DE”一样。您可以在代码末尾使用console.log(userLang)在控制台中查看。至少这对我有用。
此外,代码只是坐在那里,没有被要求解雇,这是对代码的更新,如果将其应用于jsfiddle,它就可以解决问题,我更新了userLang值,删除了hide方法,并添加了文档准备就绪,祝你好运!
$(function(){
var userLang = navigator.language || navigator.userLanguage;
if (userLang === "en-US") {
$("#english").show();
}
if (userLang === "de-DE") {
$("#deutsch").show();
}
});
答案 1 :(得分:1)
您用于检测语言的代码可以正常工作。对我来说,它显示的是我设置的en-GB
语言的英语版本。
但是,您正在做的事情(至少基于所提供的jsFiddle)隐藏了两个可用的div-如果语言不是#english
,则隐藏en-GB
div,如果语言不是,则隐藏#deutsch
div语言不是de
。因此,如果用户使用其他浏览器语言设置(例如fr
或en-US
),则两个div都将被隐藏。
此外,您已经通过CSS隐藏了div,因此无需在语句的else
部分进行隐藏。
我建议将代码更改为类似的内容
var userLang = navigator.language || navigator.userLanguage;
if (userLang == "de") {
$("#deutsch").show();
} else {
$("#english").show();
}
这样,您将为具有de
语言设置的人显示Deutsch div,为其他所有人显示English div(我想这就是您想要的?)
如果您在其他地方的代码没有像您建议的那样显示任何div,则您可能还有其他CSS规则或JS隐藏了您忘了包含在小提琴中的两个div。
顺便说一句,==
和===
比较之间的唯一区别是检查参数两侧的类型是否也匹配,而不仅仅是值。因此5 == '5'
是正确的(注意,您正在将值{5的integer
与值5的string
进行比较),而5 === '5'
则不正确-即。 ===
(也称为严格相等)比==
相等运算符严格:)严格相等符号通常用于防止可能的错误(例如,将数字和字符串加在一起)(例如, 5 + 3 = 8
-注意两者都是整数,结果是整数,但是'5' + 3 = '53'
-注意,一个是字符串,另一个是整数,结果是字符串)