2016-06-02 5 views
0

У меня есть переключатель выбора языка на моей странице html и по выбору языка, который я вызываю на тот же URL-адрес, добавляющий '? Lang ='. Это я делаю через js, и когда URL отправлен, & заменяется на?. Ниже приведен код js.Javascript url.location & заменен на?

function removeBookmarkFromUrl(url) { 
    var arr = url.split("#"); 
    return arr[0]; 
} 

$(document).ready(function() { 
    $('input:radio[name=lang]').change(function() { 
     var url = window.location.href; 
     var selectedLang = $(this).attr('id'); 
     url = removeBookmarkFromUrl(url);  
     if (url.indexOf('?lang') >= 0 || url.indexOf('&lang') >= 0) { 
      var pos = (url.indexOf('?lang') >=0) ? url.indexOf('?lang') : url.indexOf('&lang'); 
      var currentLang = url.slice(pos + 6, pos + 8); 
      if (url.charAt(pos) == '?') { 
       url = url.replace('?lang=' + currentLang, '?lang=' + selectedLang); 
       window.location = url; 
      } else if (url.charAt(pos) == '&') { 
       url = url.replace('&lang=' + currentLang, '&lang=' + selectedLang); 
       window.location = url; 
      } 
     } else { 
      if (url.indexOf('?') >= 0) { 
       window.location = url + '&lang=' + selectedLang; 
      } else { 
       window.location = url + '?lang=' + selectedLang; 
      } 
     } 
    }); 
}); 

Теперь, когда я делаю выбор языка URL-адрес в браузере http://localhost:8080/test/report.htm?count=40&name=jerry?lang=en. Я отлаживал код и видел, что URL-адрес был http://localhost:8080/test/report.htm?count=40&name=jerry&lang=en, но это меняется при подаче.

ответ

-1

Ваш код выглядит нормально. Вы должны рассмотреть возможность использования функций, они упрощают отладку.

function removeBookmarkFromUrl(url) { 
 
    var arr = url.split("#"); 
 
    return arr[0]; 
 
} 
 

 
function getLangUrl(url, lang){ 
 
    url = removeBookmarkFromUrl(url); 
 
    if (url.indexOf('?lang') >= 0 || url.indexOf('&lang') >= 0) { 
 
     var pos = (url.indexOf('?lang') >=0) ? url.indexOf('?lang') : url.indexOf('&lang'); 
 
     var currentLang = url.slice(pos + 6, pos + 8); 
 
     if (url.charAt(pos) == '?') { 
 
     url = url.replace('?lang=' + currentLang, '?lang=' + lang); 
 
     return url; 
 
     } 
 
     else if (url.charAt(pos) == '&') { 
 
     url = url.replace('&lang=' + currentLang, '&lang=' + lang); 
 
     return url; 
 
     } 
 
    } else { 
 
     if (url.indexOf('?') >= 0) { 
 
     return url + '&lang=' + lang; 
 
     } else { 
 
     return url + '?lang=' + lang; 
 
     } 
 
    } 
 
} 
 

 
var url; 
 
url = "http://localhost:8080/test/report.htm"; 
 
console.log(url, " \n-> ", getLangUrl(url, 'de')); 
 

 
url = "http://localhost:8080/test/report.htm?lang=en"; 
 
console.log(url, " \n-> ", getLangUrl(url, 'de')); 
 

 
url = "http://localhost:8080/test/report.htm?count=40&name=jerry"; 
 
console.log(url, " \n-> ", getLangUrl(url, 'de')); 
 

 
url = "http://localhost:8080/test/report.htm?count=40&name=jerry&lang=en"; 
 
console.log(url, " \n-> ", getLangUrl(url, 'de'));

Смежные вопросы