基于浏览器语言显示div,具有显示/隐藏功能(错误:没有显示)

问题描述 投票:0回答:2

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

您已经在 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();
  }
});

1
投票

您的检测语言的代码工作正常。对我来说,它显示的是英文版本,因为我设置了

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'
- 注意,一个是字符串,另一个是整数,结果是字符串)

© www.soinside.com 2019 - 2024. All rights reserved.