Javascript 如果URL包含某个参数,如何更改变量的值

Javascript 如果URL包含某个参数,如何更改变量的值,javascript,html,jquery,datatable,Javascript,Html,Jquery,Datatable,我有一个DataTable,如果用户选择了我想将DataTable翻译成英语或西班牙语的网站的英语版本,我想更改DataTable的语言 到目前为止,我的代码如下所示: var langMap = { en: { path: 'English', mods: { sLengthMenu: "Display _MENU_ records per page - custom test" }

我有一个DataTable,如果用户选择了我想将DataTable翻译成英语或西班牙语的网站的英语版本,我想更改DataTable的语言

到目前为止,我的代码如下所示:

var langMap = {
      en: {
        path: 'English',
        mods: {
          sLengthMenu: "Display _MENU_ records per page - custom test"
        }
      },
      es: {
        path: 'Spanish',
        mods: {
          sLengthMenu: "Mostrar _MENU_ registros - algo muy especial..."
        }
      }
    };

    function getLanguage() {
      var lang = 'es' //$('html').attr('lang');
      var result = null;
      var path = '//cdn.datatables.net/plug-ins/1.10.13/i18n/';
      $.ajax({
        async: false,  
        url: path + langMap[lang].path + '.json',
        success: function(obj) {
          result = $.extend({}, obj, langMap[lang].mods)
        }
      })
      return result
    }
function getLanguage() {
        if ( document.location.href.indexOf('/en') > -1 ) {
             var lang = 'es';
        }
    
      var result = null;
      var path = '//cdn.datatables.net/plug-ins/1.10.13/i18n/';
      $.ajax({
        async: false,  
        url: path + langMap[lang].path + '.json',
        success: function(obj) {
          result = $.extend({}, obj, langMap[lang].mods)
        }
      })
      return result
    }
我试图实现的是这个值
var lang='es'
不能硬编码,因此,我想检查URL是否包含
/es
/en
,并更新该值

大概是这样的:

var langMap = {
      en: {
        path: 'English',
        mods: {
          sLengthMenu: "Display _MENU_ records per page - custom test"
        }
      },
      es: {
        path: 'Spanish',
        mods: {
          sLengthMenu: "Mostrar _MENU_ registros - algo muy especial..."
        }
      }
    };

    function getLanguage() {
      var lang = 'es' //$('html').attr('lang');
      var result = null;
      var path = '//cdn.datatables.net/plug-ins/1.10.13/i18n/';
      $.ajax({
        async: false,  
        url: path + langMap[lang].path + '.json',
        success: function(obj) {
          result = $.extend({}, obj, langMap[lang].mods)
        }
      })
      return result
    }
function getLanguage() {
        if ( document.location.href.indexOf('/en') > -1 ) {
             var lang = 'es';
        }
    
      var result = null;
      var path = '//cdn.datatables.net/plug-ins/1.10.13/i18n/';
      $.ajax({
        async: false,  
        url: path + langMap[lang].path + '.json',
        success: function(obj) {
          result = $.extend({}, obj, langMap[lang].mods)
        }
      })
      return result
    }

有人能帮我一下吗?

只要你不支持应该是死浏览器(即IE),如果它是查询字符串的一部分,你可以使用它

const qs=window.location.search;
常量参数=新的URLSearchParams(qs);
const lang=params.get('lang');
如果它是url本身的一部分,那么您必须解析url。您可以使用
窗口.location.pathname
获取不带域的url
path
。这样说:
https://my.domain.com/some/path/en

//删除带前缀的“/”,然后将其拆分
const pathbits=window.location.pathname.slice(1.split('/');
const lang=路径位[2];

您可以使用此函数从该答案中解析\u查询\u字符串(),以获取参数

然后做一些像这样的简单逻辑

var query_string = window.location.search.substring(1);
var lang = parse_query_string(query_string);

if ( lang==='es') {
         //do something;
    }
else{

    //do something
}

但请注意,这适用于较新的浏览器,如参考答案所示。对于较旧的浏览器(包括Internet Explorer),您可以使用或使用此答案原始版本中早于URL的代码:

async:false
不推荐使用请求->