2013-01-19 5 views
0

자바 스크립트를 처음 사용하는 중입니다. jQuery가 기본 질문 인 경우 사과하겠습니다. 쿠키 쿠키 값을 자바 스크립트 변수 값에 저장하십시오.

  • 리콜 쿠키의 값으로 형태
  • 스토어 그것에서

    • 캡처 값과 JS 변수
    • 를 인쇄 JS에 저장 : 나는 몇 가지 간단한 코드를 작성했습니다 변수

    ...하지만 제대로 작동하지 않습니다. 쿠키가 제대로 설정되어 있는지 확인할 수는 있지만 어떤 이유로 쿠키를 검색하여 변수에 쓸 수는 없습니다. 여기 내 코드가있다, 어떤 도움을 많이 주시면 감사하겠습니다!

    <!-- CAPTURE A VALUE IN A SIMPLE FORM... --> 
        <input id="txt" type="text" value="foo" /> 
        <input id="btn" type="button" value="1 - write cookie" /> 
        <input id="btntwo" type="button" value="2 - set cookie to variable" /> 
        <input id="btnthree" type="button" value="3 - print the cookie" /> 
    
    <!-- WRITE THE VALUE TO THE COOKIE WHEN A USER CLICKS THE BTN... --> 
        <script type="text/javascript">           
        $(document).ready(function() { 
        $("#btn").on("click", function() { 
         $.cookie('myCookie', $("#txt").val(), { expires: 365 }); 
         }); 
        });        
        </script> 
    
    <!-- SET THE COOKIE VALUE TO A VARIABLE WHEN A USER CLICKS THE BTNTWO... --> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
        $("#btntwo").on("click", function() { 
        var cookVal = $.cookie('myCookie') 
        }); 
    }); 
    </script>  
    
    <!-- PRINT THE COOKIE VALUE ON THE SCREEN WHEN A USER CLICKS THE BTNTHREE... --> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
        $("#btnthree").on("click", function() { 
        document.write(cookVal);  
        }); 
    }); 
    </script>  
    
  • +0

    여러 준비 기능은 http://stackoverflow.com/questions/7395843/can-there-be-more-than-one-jquery-ready-event-on-a- 괜찮습니다 page-or-in-js-script – Saju

    답변

    2

    귀하의 cookVal 변수는 클릭 핸들러 함수에 로컬 아무것도 외부에 액세스 할 수 없습니다.

    또한 이벤트 핸들러에는 document.write을 사용하지 마십시오. HTML이 완전히 구문 분석되고 DOM이 준비되면 문서가 닫힙니다. 그 후 document.write으로 전화하면 내용이 지워지고 다시 쓰여집니다.

    Btw를 사용하면 별도의 스크립트를 하나의 코드에 추가하여 코드를 더 쉽게 읽을 수 있습니다.

    <input id="txtin" type="text" value="foo" /> 
    <button id="btn">write cookie</button> 
    <button id="btntwo">2 - set cookie to variable</button> 
    <button id="btnthree">3 - print the cookie</button> 
    <output id="txtout" /> 
    
    <script type="text/javascript">           
    $(document).ready(function() { 
        <!-- WRITE THE VALUE TO THE COOKIE WHEN A USER CLICKS THE BTN... --> 
        $("#btn").on("click", function() { 
        $.cookie('myCookie', $("#txtin").val(), { expires: 365 }); 
        }); 
        <!-- SET THE COOKIE VALUE TO A VARIABLE WHEN A USER CLICKS THE BTNTWO... --> 
        var cookVal; // declared local to the whole onready function 
        $("#btntwo").on("click", function() { 
        cookVal = $.cookie('myCookie'); 
        }); 
        <!-- PRINT THE COOKIE VALUE ON THE SCREEN WHEN A USER CLICKS THE BTNTHREE... --> 
        $("#btnthree").on("click", function() { 
        $("#txtout").val(cookVal);  
        }); 
    }); 
    </script> 
    

    Demo at jsfiddle.net

    1

    우선 $(document).ready 개의 메소드가 필요하지 않습니다. 출력됩니다 무엇

    당신이하려고하면

    당신이 온 클릭 #btn에 대한 자바 스크립트를 보면
    $(document).ready(function() { 
    
        $("#btn").on("click", function() { 
         $.cookie('myCookie', $("#txt").val(), { expires: 365 }); 
        });        
    
        var cookVal = 'NOT SET'; 
    
        $("#btntwo").on("click", function() { 
         cookVal = $.cookie('myCookie') 
        }); 
    
        $("#btnthree").on("click", function() { 
         document.write(cookVal);  
        }); 
    
    }); 
    

    , 쿠키를 저장하기위한 구문이 잘못되었습니다. 스크립트를 위반할 여분의 })을 추가하고 있습니다. 확실하지 않은 경우 Chrome에서 개발자 도구를 사용하거나 Firefox에서 Firebug를 사용하여 콘솔을 확인하십시오. 거기에 JavaScript 오류가 출력됩니다.

    0

    각각을 별도의 $(document).ready(function()에 넣지 않아도됩니다. 모두 하나씩 넣을 수 있습니다. 또한이에 대한 속기는 다음과 같습니다

    $(function(){ 
    ............ 
    }); 
    
    +0

    이것을 확인하십시오. 그래서 답변을 http://stackoverflow.com/questions/7395843/can-there-be-more-than-one-jquery-ready-event-on-a-page- or-in-js-script – Saju

    +0

    주의 깊게 읽으십시오. 배울 필요가없는 배수만 가질 수는 없다고 말하지 않았습니다. –

    +0

    귀하의 답변은 의견으로 더 적절했습니다. – Saju