Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在用户界面中隐藏/显示语言按钮_Javascript_Jquery_Button_Show Hide - Fatal编程技术网

Javascript 在用户界面中隐藏/显示语言按钮

Javascript 在用户界面中隐藏/显示语言按钮,javascript,jquery,button,show-hide,Javascript,Jquery,Button,Show Hide,我有一个应用程序,上面有一个按钮用于页面翻译(英语/西班牙语)&我根据加载的页面隐藏它们。默认情况下,加载英语,因此西班牙语按钮位于顶部,用户可以单击它们,因此加载西班牙语版本(我们现在隐藏西班牙语按钮并显示英语) 问题是当用户第一次加载页面,然后选择西班牙语,然后离开,然后重新加载页面,西班牙语版本会消失,但按钮也是西班牙语。从技术上讲,应该是英语。这是因为第一次加载页面时,变量的值是未定义的,它被定义为英语,我们显示西班牙语按钮。我们是否可以调整它以正确显示按钮?我也没有在cookie中明确

我有一个应用程序,上面有一个按钮用于页面翻译(英语/西班牙语)&我根据加载的页面隐藏它们。默认情况下,加载英语,因此西班牙语按钮位于顶部,用户可以单击它们,因此加载西班牙语版本(我们现在隐藏西班牙语按钮并显示英语)

问题是当用户第一次加载页面,然后选择西班牙语,然后离开,然后重新加载页面,西班牙语版本会消失,但按钮也是西班牙语。从技术上讲,应该是英语。这是因为第一次加载页面时,变量的值是未定义的,它被定义为英语,我们显示西班牙语按钮。我们是否可以调整它以正确显示按钮?我也没有在cookie中明确存储任何内容

代码

function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
}

function pageLoadConditions() {

    var lang = getUrlParameter('lang'); 

    alert ("lang: " +lang);
    if(typeof lang=="undefined"){
        lang='en';
        alert ("lang 2: " +lang);
    }
    alert ("lang 3: " +lang);
    if(lang){
        if(lang==="es"){
            $('#lang_pref').val(lang);      
            $("#lang_ess").hide();
            $("#lang_enn").show();
        }else{
            $('#lang_pref').val(lang);      
            $("#lang_enn").hide();
            $("#lang_ess").show();          
        }
    }else{
        $('#lang_pref').val("en");      
        $("#lang_enn").hide();
        $("#lang_ess").show();
    }

}
    window.onload = pageLoadConditions; 
函数getUrlParameter(sParam){ var sPageURL=decodeURIComponent(window.location.search.substring(1)), sURLVariables=sPageURL.split(“&”), sParameterName, 我 对于(i=0;i
谢谢。

谢谢Maulzal,我能让它工作了

我所要做的就是在jsp中添加if条件,如下所示

<c:if test="${pageContext.response.locale != &quot;es&quot;}">
    Spanish button
</c:if>
<c:if test="${pageContext.response.locale != &quot;en&quot;}">
    Eng button
</c:if>

西班牙语按钮
Eng按钮
我还注释掉了与此相关的所有javascript函数。
谢谢。

你所做的肯定会奏效,但这不是实现国际化的“正确方式”。JSP中有本机支持定义包含id->特定于语言的字符串映射的资源束。一旦您在JSP中正确设置了字符串id,添加另一种语言并不意味着您需要遍历整个应用程序,找到所有字符串并向if-else梯形图添加另一个梯级,而是只需添加另一个id->language映射文件

但是,如果您只支持两种语言,那么您所做的一切都可以


您是否考虑过只更改按钮的文本值而不显示/隐藏?让它听哪个页面被加载,而不是点击本身。谢谢,从技术上讲,它是同一个页面。我正在使用Spring进行自动转换。我认为他们的关键是创建一个变量或布尔值,以确定您正在查看的是英语还是西班牙语,并让您的按钮文本收听该布尔值。再次感谢。问题将是如何确定页面加载是英语还是西班牙语。然后我需要依赖同样的逻辑(我在上面发布的那个),第一次加载页面时,它将是未定义的,因此它将是英语的&等等。有没有其他方法来确定这一点?任何指针都会很有帮助。实际上,我对所有其他语言都使用Spring语言环境,除了这个特殊的场景,我需要显示/隐藏备用语言按钮,以便用户可以单击。正如我在问题中提到的那样,我尝试了javascript,但它在几个实例中都不起作用,因此采用了这个解决方案。谢谢,我只是想确保你不会无缘无故地走上死胡同