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'));

関連する問題