//루프 없이 URL에서 매개변수 값을 가져오려면 정규 표현식을 사용하세요. 루프 교체의 핵심 기술은 문자열의 replacement() 메소드가 함수를 두 번째 매개변수로 사용하여 사용자 정의 방식으로 교체할 수 있다는 것입니다.
//이 매개변수 이름은 있지만 값이 없는 경우 해당 매개변수 이름이 없으면 빈 문자열이 반환됩니다.
var getArg = function(argname)
{
var str = location.href;
var submatch;
//먼저 물음표와 웰헤드 사이의 쿼리 문자열을 꺼냅니다. http://www.snowpeak.org/testjs.htm?a1=v1&a2=&a3=v3#anchor에서 잘라낸 a1=v1&a2=&a3=v3과 같은 URL입니다.
//물음표는 패턴 내 특수 문자이므로 ?;로 작성해야 합니다. 파운드 기호는 선택 사항이므로 패턴은 #?로 끝납니다.
if (submatch = str.match(/? ([^#]*) #?/))
{
//a1=v1&a2=&a3=v3 형식으로 캡처된 부분 일치를 가져오고 앞에 &를 추가하여 일반 &a1=v1&a2=&a3을 만듭니다. =v3 다음 단계에서 쉽게 교체
var argstr = '&' submatch[1]
//대체 함수를 만들고 &a1=v1 모양의 발견된 각 그룹을 a1:"v1"로 교체합니다. 이는 속성 선언과 같은 객체 정의에 사용됩니다.
var returnPattern = function(str)
{
//$1 및 $2는 문자열
에서 사용해야 하는 첫 번째 및 두 번째 캡처된 부분 일치를 나타냅니다. return str.replace (/&([^=] )=([^&]*)/, '$1:"$2",');
}
//두 번째 전역 정규 교체 실행 매개변수는 단지 정의된 대체 함수가 a1=v1&a2=&a3=v3을 a1:"v1",a2:"",a3:"v3",
argstr = argstr.replace(/&([^=] )로 대체합니다. = ([^&]*)/g, returnPattern);
//마지막으로 var retvalue = {a1:"v1",a2:"" 형식이어야 하는 객체 선언을 실행합니다. ,a3:"v3"} ; 객체 선언, 방금 교체한 문자열 끝에 쉼표가 있습니다. substr
eval('var retvalue = {' argstr.substr(0, argstr.length-1 ) '};');
//이제 URL의 각 매개변수 이름은 해당 속성 이름이고 매개변수 값은 해당 속성 값입니다.
return retvalue[argname ];
}
}
//테스트
document.write('a1=' getArg('a1') ', a2=' getArg('a2') ', a3 =' getArg('a3 '))