根据具有浏览/隐藏功能的浏览器语言显示div(错误:未显示任何内容)

时间:2018-06-22 20:13:08

标签: jquery browser navigator multiple-languages

我想在网站上以不同的语言显示一个段落,具体取决于浏览器的设置(不幸的是必须使用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();
}

2 个答案:

答案 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。因此,如果用户使用其他浏览器语言设置(例如fren-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'-注意,一个是字符串,另一个是整数,结果是字符串)