>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 기술을 사용하여 URL을 처리하기 위한 두 가지 함수 코드

JavaScript_javascript 기술을 사용하여 URL을 처리하기 위한 두 가지 함수 코드

WBOY
WBOY원래의
2016-05-16 19:10:221021검색

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)=="undefine"){
return ""; returnValue;
}
}
function direct(){ //첫 번째 매개변수는 현재 URL입니다(예: http://localhost/demo.asp?xxx=zzz). 두 번째 및 후속 매개변수는 다음과 같습니다. xxx=yyy, mm=bbbbbb 형식이어야 합니다. 최종 점프 URL은 http://localhost/demo.asp?xxx=yyy&aaa=bbb
if (arguments.length==1){
location입니다. href = 인수[ 0];
return;
}else{
var paraObj = {}
if (arguments[0].indexOf("?")!=-1) 🎜>var curUrlParas = 인수[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 = 인수[0 ].substring( 0,arguments[0].indexOf("?") 1) newURL.substring(0,newURL.length-1)
}else{
newURL = 인수[0] "?" newURL.substring( 0,newURL.length-1);
}
location.href = newURL;
return;
}
}


function return if 매개변수가 1개뿐인 경우 단순 리디렉션입니다. 매개변수가 2개 이상인 경우 목적지 URL을 동적으로 지정할 수 있습니다. 이 함수는 리디렉션("http:/ /www.xxx.com/ list.asp?page=1","page="parseInt(request("page")) 1), 다음과 같은 URL 유형 검색에도 사용할 수 있습니다. //www.xxx.com/search.asp","range=" escape($("range").value),"keyword=" escape($("keyword").value)), url의 동작 단순해진다.
리디렉션의 핵심은 URL 매개변수 테이블(해시 테이블)을 구축하는 것입니다. 함수의 두 번째 이후 매개변수가 해시 테이블에 추가되고 마지막으로 테이블이 대상 URL로 직렬화됩니다.

로그 게시를 마치자마자 조금 개선하면 도착 URL을 새 창에서 열지 여부를 결정하는 매개변수를 추가할 수 있겠다는 생각이 들었습니다.


/*
첫 번째 매개변수는 현재 URL입니다(예: http://localhost/demo.asp?xxx=zzz).
두 번째 및 후속 매개변수는 form xxx=yyy, mm=bbbbbb
최종 점프 URL은 http://localhost/demo.asp?xxx=yyy&aaa=bbb입니다.
*/
function 리디렉션(){
if (인수 .length==0){
return;
}
if (arguments.length==1){
location.href = 인수[0];
} else if(arguments.length==2){
(arguments[1]==true)?window.open(arguments[0]):location.href = 인수[0]
return; > }else{
var paraObj = {};
if (arguments[0].indexOf("?")!=-1){
var curUrlParas = 인수[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 = 인수[0].substring(0,arguments[0].indexOf(" ? ") 1) newURL.substring(0,newURL.length-1);
}else{
newURL = 인수[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); //페이지 넘김 기능의 "다음 페이지"입니다.

*/
함수 리디렉션(){
if (arguments.length==0){
return;
}
if (arguments.length==1) {
location.href = 인수[0];
return;
}else if(arguments.length==2 && typeof(arguments[1])=="boolean"){
( 인수[1]==true)?window.open(arguments[0]):location.href = 인수[0];
return;
}else{
var paraObj =
if (arguments[0].indexOf("?")!=-1){
var curUrlParas = 인수[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 =args.length
for (i= 1; i if (typeof(arguments[i])=="boolean"){
break
}
paraObj[arguments[i].substring(0,arguments[i].indexOf(" =")).toLowerCase()] = 인수[i].substring(arguments[i].indexOf("=") 1,arguments[i].length);
}
var newURL= "" ;
for (paraObj의 키){
newURL = key "=" paraObj[key] "&";
}
if (arguments[0].indexOf("?")!= -1){
newURL = 인수[0].substring(0,arguments[0].indexOf("?") 1) newURL.substring(0,newURL.length-1)
}else{
newURL = 인수[0] "?" newURL.substring(0,newURL.length-1)
}
if(typeof(arguments[length-1])=="boolean" && 인수 [length-1]==true){
window.open(newURL);
}else{
location.href = newURL;
}
}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.