0

3 つのオプション (3 つのリンク) を含む cookie ベースのメニューを作成しようとしています。ここで、ユーザーがサイトにアクセスしたときに、3 つのオプションのいずれかを選択する必要があるようにしたいと考えています。ユーザーの選択は Cookie に保存されるため、次回同じサイトにアクセスしたときに再度選択する必要がなく、以前の選択に自動的に移動する必要があります。

これはそのための私のコードです

</style>
<!-- style Develpor page ends here-->
<script src="jqery1.8.js"></script>
<script type="text/javascript">

var val;

$(document).ready(function (e) {
  $('.nav a').click(function (event) {
    event.preventDefault();
    val = $(this).index();

    if (val == 0) {

      $('#hide_main').hide();
      $('.main_BSNS').animate({
        opacity: "show",
        height: "400px"
      }, 'slow')

    } //if val==0 ends here

    else if (val == 1) {

      $('#hide_main').hide();
      $('.main_ACTNT').animate({
        opacity: "show",
        height: "400px"
      }, 'slow')

    } else if (val == 2) {

      $('#hide_main').hide();
      $('.main_devp').animate({
        opacity: "show",
        height: "400px"
      }, 'slow')

    }
  });
});



<!--cookies starts here-->
function getCookie(c_name) {
  var i, x, y, ARRcookies = document.cookie.split(";");
  for (i = 0; i < ARRcookies.length; i++) {
    x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
    y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
    x = x.replace(/^\s+|\s+$/g, "");
    if (x == c_name) {
      return unescape(y);
    }
  }
}

function setCookie(c_name, value, exdays) {
  var exdate = new Date();
  exdate.setDate(exdate.getDate() + exdays);
  var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
  document.cookie = c_name + "=" + c_value;
}

function checkCookie() {
  var username = getCookie("BSNS");
  if (username != null && username != "") {
    $('#hide_main').hide();
    $('.main_BSNS').animate({
      opacity: "show",
      height: "400px"
    }, 'slow')

  } else {

    username=val;
    alert(val);
    if (username != null && username != "") {
      setCookie("BSNS", username, 365);
      $('#hide_main').hide();
      $('.main_BSNS').animate({
        opacity: "show",
        height: "400px"
      }, 'slow')

    }
  }
}
<!--cookies ends here-->
</script>

現在、関数checkCookie()はボディによって呼び出されonload="checkCookie()"、アラートは値を返します。valこれは、以前にロードされているundefinedためですが、この困難を克服する方法がわかりません。checkCookie()document.write

4

1 に答える 1

0

皆さん、これをチェックしてください...私は新しいコードを作成しましたが、それは私にとってはうまくいきました...私のようなイベントを探している人が役立つように、ここに置いています....

<script type="text/javascript">
var val,cookiee;
$(document).ready(function(e) {

            $('.nav a').click(function(event) {
                event.preventDefault();
                 val=$(this).index();

                if(val==0){

                $('#hide_main').hide();
                $('.main_BSNS').animate({opacity:"show",height:"400px"},'slow')


                    var value="BSNS"
                    var today = new Date();
                    var expire = new Date();
                    nDays=1;
                    expire.setTime(today.getTime() + 3600000*24*nDays);
                    document.cookie = escape(value) + ";expires="+expire.toGMTString();

                    }//if val==0 ends here

                else if(val==1){

                    $('#hide_main').hide();
                    $('.main_ACTNT').animate({opacity:"show",height:"400px"},'slow')                                                

                    var value="ACTNT"
                    var today = new Date();
                    var expire = new Date();
                    nDays=1;
                    expire.setTime(today.getTime() + 3600000*24*nDays);
                    document.cookie = escape(value) + ";expires="+expire.toGMTString();
                    }

                else if(val==2){

                    $('#hide_main').hide();
                    $('.main_devp').animate({opacity:"show",height:"400px"},'slow')                                             

                    var value="APP"
                    var today = new Date();
                    var expire = new Date();
                    nDays=1;
                    expire.setTime(today.getTime() + 3600000*24*nDays);
                    document.cookie = escape(value) + ";expires="+expire.toGMTString();

                    }




            });
});
function checkCookie(){

cookiee=document.cookie;//assigning cookie value to var cookiee
var check_BSNS=cookiee.match(/BSNS/);//checking if cookie has word BSNS
var check_ACTNT=cookiee.match(/ACTNT/);//checking if cookie has word ACTNT
var check_APP=cookiee.match(/APP/);//checking if cookie has word BSNS

if(check_BSNS=="BSNS" && check_ACTNT==null && check_APP==null)//code to executed if cookie has BSNS
{
                $('#hide_main').hide();
                $('.main_BSNS').animate({opacity:"show",height:"400px"},'slow')


    }

else if(check_BSNS==null && check_ACTNT=="ACTNT" && check_APP==null)//code to executed if cookie has ACTNT
{
            $('#hide_main').hide();
            $('.main_ACTNT').animate({opacity:"show",height:"400px"},'slow')                                                


    }

else if(check_BSNS==null && check_ACTNT==null && check_APP=="APP")//code to executed if cookie has APP
{
            $('#hide_main').hide();
            $('.main_devp').animate({opacity:"show",height:"400px"},'slow')                                                     

    }





}

window.onload=checkCookie();// このコードは、ウィンドウが開かれた直後に関数 checkCookie をロードします...

これで、この checkCookie() 関数は body onload="checkCookie()" によって呼び出されます....私は co の動作を示すためにそこにコメントを入れました

于 2013-01-14T19:24:40.853 に答える