2011-09-02 2 views
1

저는 정말 자바 스크립트에 익숙하며 다음을 수행하는 방법을 이해하는 데 어려움을 겪고 있습니다. 제 목표는 페이지가로드 될 때 특정 자바 스크립트 액션을 실행하고 URL 끝에 추가 된 변수가 어떤 자바 스크립트 액션을 실행할 지 결정하는 것입니다. 이것을 구현하고자하는 페이지의 URL은 http://www.morgantoolandsupply.com/catalog.php입니다. 자바 스크립트로 구동되는 '+ 확장'버튼 각각은 페이지의 특정 영역을 드롭 다운합니다. 궁극적으로, 페이지가로드 될 때 특정 카테고리를 자동으로 드롭 다운하는 URL을 생성하고 싶습니다. 아무도 나에게이 일을 설명 할 수 있겠습니까? 어떤 도움을 주셔서 미리 감사드립니다!URL에 변수를 사용하여 자바 스크립트 코드를 실행하는 방법

+0

감사합니다 모든 사람을이를 통해 나를 도와! 나는 며칠 동안 해결책을 찾기 위해 애를 썼지 만 모든 답변이 정확하게 어떻게 작동해야하는지 정확하게 이해했다. – user924650

답변

0

이미 함수가 호출 할 수있어 : toggle2()를, 마지막 숫자를 제외한 모든 범주에 대한 동일 할 일이 두 가지 매개 변수를 사용한다. 해당 번호가 포함 된 URL을 만드십시오. http://www.morgantoolandsupply.com/catalog.php#cat=4

그런 다음 location.hash에 정규 표현식을 사용하여 찾으십시오. 이 URL은 여러 URL 매개 변수를 처리 할 수있을 정도로 견고하며 나중에 사용하기로 결정해야합니다 (/[\#&]cat=(\d+)/). 그러나 URL에 다른 것을 추가하지 않으려는 경우 /(\d+)/과 같은 매우 단순한 URL을 사용할 수 있습니다. 당신이 수를했으면

, 그것은 당신의 두 개의 매개 변수를 만들려면 해당 번호를 사용하고 toggle2()를 호출하는 간단한 문제입니다.

이 작동합니다 :

window.onload = function() { 
    if (/[\#&]cat=(\d+)/.test(location.hash)) { 
     var cat = parseInt(RegExp.$1); 
     if (cat > 0 && cat < 13) { 
      toggle2("toggle"+cat, "displayText"+cat); 
     } 
    } 
} 
+0

이것은 완벽하게 작동했습니다! 도와 주셔서 정말 감사합니다! – user924650

2

당신은 그들이 서버 측 스크립트에있는 것처럼 URL에 매개 변수가 자동으로 (PHP의 $_GET을 통해 예를 들어,), 자바 스크립트로 전달되지 않기 때문에

한 다소 "수동"URL을 구문 분석해야 방법은 URL 조각 식별자, 즉 끝에 갈 수있는 "#something"비트를 사용하는 것입니다. 이것은 아마도 조각이 서버로 전송되지 않기 때문에, 그 일의 산뜻한 방법이다, 그래서는 다른 매개 변수

// window.location.hash is the fragment i.e. "#foo" in "example.com/page?blah=blah#foo" 
if(window.location.hash) { 
    // do something with the value of window.location.hash. First, to get rid of the "#" 
    // at the beginning, do this; 
    var value = window.location.hash.replace(/^#/,''); 
    // then, if for example value is "1", you can call 
    toggle2('toggle' + value , 'displayText' + value); 
} 

의 URL에 "http

와 혼동되지 않습니다 //www.morgantoolandsupply. com/catalog.php # 1 "은 자동으로"toggle1 "요소를 확장합니다.

다른 방법으로는 (즉 "? foo는 = 바")

var parameter = window.location.search.match(/\bexpand=([^&]+)/i); 
if(parameter && parameter[1]) { 
    // do something with parameter[1], which is the value of the "expand" parameter 
    // I.e. if parameter[1] is "1", you could call 
    toggle2('toggle' + parameter[1] , 'displayText' + parameter[1]); 
} 

window.location.search는 매개 변수, 물음표에서 끝까지 또는 URL 조각을 즉 모든 것을 포함하는 일반적인 GET 매개 변수를 사용할 수 있습니다. URL이 "example.com/page.php?expand=foo"인 경우 parameter[1]은 "foo"와 같습니다. 따라서 URL "http://www.morgantoolandsupply.com/catalog.php?expand=1"은 "toggle1"요소를 확장합니다.

URL의 숫자보다 더 자세한 설명이 필요한 경우 (예 : "#abrasives"또는 "# 1"대신 "abrasive"확장 또는) "= 1 확장"하지만 기존 페이지의 약간의 조정이 필요, 그래서 모든 것을) "사람에게 물고기를주고"(나중에

+0

조각에 여분의 물건을 채우고'window.location.hash'를 보면 클라이언트 측 솔루션에 더 좋을 수도 있습니다. –

+0

@muistooshort : Heh, 나는 당신이 코멘트하고있는 동안 정확히 그 제안을 내 대답을 업데이트하고 있었다. :) 그리고 동의한다. 조각을 사용하는 것이 나의 선호하는 해결책이기도하다. 하지만 처음에 내 대답을 쓸 때 GET 매개 변수에 너무 매달 렸습니다. – Flambino

0

하지 완전한 대답을 떠날,하지만 당신은 시작할 수 있습니다 이 줄을 따라 뭔가 :

// entire URL 
var fullURL = window.location.href; 

// search string (from "?" onwards in, e.g., "www.test.com?something=123") 
var queryString = window.location.search; 

if (queryString.indexOf("someParameter") != -1) { 
    // do something 
} 

window.location에 대한 자세한 정보는 Mozilla 개발자 네트워크에서 제공하고 있습니다.

그런데, 당신이 PHP 페이지에 대해 이야기하고 있다고 가정 할 때 왜 어떤 서버 측 PHP를 사용하여 동일한 결과를 얻지 못합니까?

관련 문제