2012-03-14 3 views
0

4 페이지, 4 페이지가 있습니다. 그리고 js 파일에 전역 변수를 저장하면 각 웹 페이지에서 yes/no를 클릭하여 변수를 업데이트하려고합니다. 변수를 보관할 수있는 방법이 있습니까? 예 : webrownser 또는 하드 디스크에 저장 하시겠습니까?동일한 변수를 여러 파일로 업데이트하십시오.

<head> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript" src="js/counter.js"></script> 
</head> 
<body> 
    <h1>Are u in?</h1> 
    <!--img tag--> 
    <div id="yes"> 
     <input type="button" name="yes" value="Yes"> 
    </div> 
    <div id="no"> 
     <input type="button" name="yes" value="No"> 
    </div> 
    <script type = "text/javascript"> 
      $("#yes").click(function() { 
       count = 1; //page2 will getC() and count += 2 and setC(count) 
       setC(count); 
       window.location.replace("page2.html");//maybe this will clear out something 
      }); 
      $("#no").click(function() { 
       window.location.replace("page2.html"); 
      }); 
    </script> 
</body> 

------------ JS 파일 ------------------

var count; 

function setC(c){ 
    count = c; 
} 
function getC(){ 
    return count; 
} 

답변

2

당신은 사용해야합니다 cookie은 요청간에 값을 저장합니다.

function getC(){ 
    return $.cookie('the_count') || 0; //Pass in the cookie key 
} 
얻기 값

function setC(c){ 
    $.cookie('the_count', c); //Cookie Key and Cookie Value 
} 

설정 : 여기

https://github.com/carhartl/jquery-cookie 간단한 예입니다 : 당신은 매우 쉽게 쿠키 작업을 만든다이 jQuery 플러그인을 사용할 수 있습니다

이제 글로벌 변수가 필요하지 않습니다. 카운트. setCgetC을 사용할 수 있습니다. 좀 더 복잡한 솔루션에 관심이 있다면 jQuery 쿠키 플러그인 대신 AmplifyJS를 사용할 수 있습니다. AmplifyJS는 가능한 경우 HTML5 local storage을 사용하고 브라우저가 로컬 저장소를 지원하지 않으면 쿠키로 폴백합니다. 여기에 자세한 정보 : http://amplifyjs.com/api/store/

+0

나는 Firefox에서 그렇게 할 수 있었지만 Chrome에서는 null이되었습니다. – CodeFarmer

+0

각 브라우저에는 고유 한 쿠키 세트가 있습니다. 따라서 페이지 요청을 수행하지만 브라우저간에 지속되지는 않습니다. 'return $ .cookie ('the_count');'를 $로 변경할 수 있습니다 .cookie ('the_count') || 0;'아무것도 설정되지 않은 경우 기본값 0을 반환합니다. – Paul

1

쿠키는 언급 한 것처럼 훌륭한 해결책입니다. 그러나 손을 더럽 히고 싶다면 HTML5 localStorage API을 들여다 볼 수 있습니다. 이는 이런 종류의 작업에 이상적입니다.

누군가가 지원하지 않는 브라우저를 사용하는 경우 항상 쿠키로 폴백 할 수 있지만 쿠키가 거부 될 수 있음을 명심하십시오. 사이트가 이에 의존하는 경우 문제가 발생할 수 있습니다.

file : // urls에서 로컬로 개발하는 경우 저장소는 도메인에서와 같이 페이지 전체에서 지속되지 않으며 각 파일 URL은 샌드 박스되고 다른 파일 저장소에 액세스 할 수 없습니다.

+1

손을 더럽고 (실시간으로) 보려면 node.js 및 socket.io :)를 확인하십시오. – Moon

관련 문제