javascript - 使用 jQuery 更改后保留元素的值

标签 javascript jquery internationalization

为了国际化支持,我编写了代码来更改 #lang-select 下拉列表中的 URL。代码为

$(document).ready(function(){
   var sel = document.getElementById('lang-select');
    sel.onchange = function(){window.location.replace($('#lang-select').val());};
 });

上面的代码工作正常,它将 URL 从 http://0.0.0.0:3000/fr 更改为 http://0.0.0.0:3000/en >。 现在我想保留更改后的值,但没有成功。我写了下面的代码。我不知道为什么它是错误的/不起作用。

function langSelect(){
var available_languages = {
    "en":"English",
    "de":"Deutsch",
    "ru" :"Россию",
    "fr" : "Française"
};
var languageInUrl= document.URL.split("/")[3];
for(var shortLanguage in available_languages){
    if(shortLanguage === languageInUrl) {
        var langaugeOptionArray = $("#lang-select>option");
        for(var i = 0 ; langaugeOptionArray.length > i ; i++){
            if(langaugeOptionArray[i].label === available_languages[shortLanguage]){
                langaugeOptionArray[i].selected = true;
                return;
            }
        }
    }
  }
}

请告诉我上面的代码有什么问题,因为我所做的并不是什么新鲜事,请分享克服这种情况的最佳实践。

目前,我正在使用后端来完成此任务。

最佳答案

$(function() {
  $('#lang-select').on("change",function(){   
    window.location.replace($(this).val());
  }); 
});

function langSelect(){
  var available_languages = {
    "en":"English",
    "de":"Deutsch",
    "ru" :"Россию",
    "fr" : "Française"
  };
  var languageInUrl= document.URL.split("/")[3];
  var lang = available_languages[languageInUrl];
  if (lang) {
    var langaugeOptionArray = $("#lang-select>option");
    langaugeOptionArray.each(function() {
      if($(this).text() === lang){
        $("#lang-select").val(lang);
        return false;
      }
    });
  }
}

我相信我们甚至可以做到

if (lang) {
  var opt = $("#lang-select").find('option[text="'+lang+'"]').val();
  if (opt) $("#lang-select").val(opt); 
}

祝你好运

关于javascript - 使用 jQuery 更改后保留元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405673/

相关文章:

c++ - 重写 MFC 应用程序的 LoadString

javascript - Plotly.js 痕迹未显示

javascript - 杀死 node.js 中的异步函数调用

javascript - 在 TinyMCE 中将标签包装在标签内

javascript - 事件处理程序之间的全局变量

angular - 在 Angular 的 i18n 中是否有理由使用 XMB 和 XTB 消息格式而不是 XLF 或 XLIFF?

javascript - 定向网络中的网络连接衰减 - d3js

jQuery 使用一个 .js 文件实现不同页面的不同操作

javascript - 在javascript中将字符串转换为日期时间并与当前时间进行比较

java - Android 中文本的本地化