ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript_javascript スキルを使用して URL を処理するための 2 つの関数コード
function request(paras){ //URL のパラメータ値を取得します。大文字と小文字は区別されません。そのようなパラメータがない場合は、空の文字列を返します。
var url = location.href
var paraString = url.substring; (url .indexOf("?") 1,url.length).split("&");
var paraObj = {}
for (i=0; j=paraString[i]; i ){
paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") 1,j.length);
}
var returnValue = paraObj[paras.toLowerCase()];
if(typeof(returnValue)=="未定義"){
return ""}else{
return returnValue;
}
}
function redirect(){ //最初のパラメータは http://localhost/demo.asp?xxx=zzz などの現在の URL であり、2 番目以降のパラメータは次のとおりです。 xxx=yyy, mm=bbbbb の場合、最終的なジャンプ URL は http://localhost/demo.asp?xxx=yyy&aaa=bbb
if (arguments.length==1){
の場所になります。 href = 引数[0];
}else{
var paraObj = {};
if (arguments[0].indexOf("?")!=-1) 🎜>var curUrlParas = argument[0].substring(arguments[0].indexOf("?") 1,arguments[0].length).split("&");
for (i=0; j) =curUrlParas[i ]; i ){
paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") 1,j .length);
}
}
for (i=1; j=arguments[i]; i ){
paraObj[j.substring(0,j.indexOf("=") ).toLowerCase( )] = j.substring(j.indexOf("=") 1,j.length);
}
var newURL= ""
for (paraObj のキー); 🎜>newURL = key "=" paraObj[key] "&";
}
if (arguments[0].indexOf("?")!=-1){
newURL = argument[0 ].substring( 0,arguments[0].indexOf("?") 1) newURL.substring(0,newURL.length-1);
}else{
newURL = argument[0] "?" newURL.substring( 0,newURL.length-1);
}
location.href =
return;
}
}
function redirect if パラメータが 1 つの場合は単純なリダイレクトです。パラメータが 2 つ以上ある場合、この関数は redirect("http:/ /www.xxx.com/ list.asp?page=1","page=" parseInt(request("page")) 1)、次のような URL タイプの検索にも使用できます。 redirect("http: //www.xxx.com/search.asp","range="escape($("range").value),"keyword="escape($("keyword").value))、URL の操作シンプルになります。
リダイレクトの核心は、URL パラメーター テーブル (ハッシュ テーブル) を確立することであり、関数の 2 番目以降のパラメーターがハッシュ テーブルに追加され、最終的にテーブルが宛先 URL にシリアル化されます。
ログを投稿し終えてすぐに、もう少し改良して、リンク先の URL を新しいウィンドウで開くかどうかを決定するパラメーターを追加できないかと考えました。
/*
最初のパラメータは、http://localhost/demo.asp?xxx=zzz などの現在の URL です。
2 番目以降のパラメータは、 form xxx=yyy, mm=bbbbb
最終的なジャンプ URL は http://localhost/demo.asp?xxx=yyy&aaa=bbb
*/
function redirect(){
if (引数. length==0){
return;
}
if (arguments.length==1){
location.href = argument[0]
} else if(arguments.length==2){
(arguments[1]==true)?window.open(arguments[0]):location.href = argument[0]; > }else{
var paraObj = {};
if (arguments[0].indexOf("?")!=-1){
var curUrlParas = argument[0].substring(arguments[ 0 ].indexOf("?") 1,arguments[0].length).split("&");
for (i=0; j=curUrlParas[i]; i ){
paraObj[ j .substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") 1,j.length); > for (i=2; j=arguments[i]; i ){
paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf) ( "=") 1,j.length);
}
var newURL= "";
for (paraObj のキー){
newURL = key "=" paraObj[key] "& " ;
}
if (arguments[0].indexOf("?")!=-1){
newURL = argument[0].substring(0,arguments[0].indexOf(" ? ") 1) newURL.substring(0,newURL.length-1);
}else{
newURL = argument[0] "?" newURL.substring(0,newURL.length-1);
}
arguments[1]==true?window.open(newURL):location.href = newURL;
return;
}
}
昨日の退勤前に考えたことを元に、再度修正して最後に2番目のパラメータを入れてみます。
/*
使用年齢:
redirect(url,[paras_1],[paras_2],...,[paras_n],[newWin])
paras_n: URL パラメータ、フォームpage=1 や type=news など。
newWin: 関数の最後のパラメータ。ブール型。true の場合、新しいウィンドウ (window.open) を使用して URL を開きます。それ以外の場合、現在のウィンドウ (location.open) を使用して開きます。デフォルト値は false です。
例:
redirect("http://www.google.com/search","q=hello","start=20",true); //「hello」を検索します。 on google 」にアクセスして 3 ページ目を開き、新しいウィンドウで開きます。
redirect("http://www.xxx.com/listpage.asp","page=" parseInt(request("page")) 1); //ページめくり関数の「次のページ」。
*/
function redirect(){
if (arguments.length==0){
return;
}
if (arguments.length==1) {
location.href = argument[0];
return;
}else if(arguments.length==2 && typeof(arguments[1])=="boolean"){
( argument[1]==true)?window.open(arguments[0]):location.href = argument[0];
}else{
var paraObj = {}; >if (arguments[0].indexOf("?")!=-1){
var curUrlParas = argument[0].substring(arguments[0].indexOf("?") 1,arguments[0] .length).split("&");
for (i=0; j=curUrlParas[i]; i ){
paraObj[j.substring(0,j.indexOf("=")) .toLowerCase()] = j.substring(j.indexOf("=") 1,j.length);
}
}
var j = argument.length>for (i= 1; i if (typeof(arguments[i])=="boolean"){
break;
}
paraObj[arguments[i].substring(0,arguments[i].indexOf(") =")).toLowerCase()] = argument[i].substring(arguments[i].indexOf("=") 1,arguments[i].length);
}
var newURL= "" ;
for (paraObj のキー){
newURL = key "=" paraObj[key] "&";
}
if (arguments[0].indexOf("?")!= -1){
newURL = argument[0].substring(0,arguments[0].indexOf("?") 1) newURL.substring(0,newURL.length-1);
}else{
newURL = argument[0] "?" newURL.substring(0,newURL.length-1);
}
if(typeof(arguments[length-1])=="boolean" && 引数[長さ-1]==true){
window.open(newURL);
}else{
location.href = newURL;
}
}